2016-10-18 2 views
1

Ich habe alle Lösungen zu meiner Frage überprüft, aber niemand hat gearbeitet, ich habe eine Ereignistabelle, in der ich die ID des Benutzers festlege . Ereignismodell istKann "42" nicht zuweisen: "Event.user_id" muss eine "User" -Instanz sein

class Event(models.Model): 
    user_id=models.ForeignKey(User, on_delete=models.CASCADE) 
    event_auth_id=models.CharField(null=True, max_length=225) 
    event_title=models.CharField(max_length=225) 
    ticket_title=models.CharField(max_length=225) 
    category=models.CharField(max_length=50) 
    event_summary=models.TextField() 
    event_information=models.TextField() 
    restriction=models.CharField(max_length=50, default='No Restriction') 
    artist_image=models.CharField(null=True, max_length=50) 
    event_poster=models.CharField(null=True, max_length=50) 
    notification_email=models.CharField(null=True, max_length=50) 
    notification_frequency=models.CharField(null=True, max_length=15) 
    name_on_ticket=models.CharField(max_length=225) 
    event_tnc=models.TextField() 
    current_step=models.IntegerField(null=True) 
    event_status=models.BooleanField(default=True) 
    created=models.DateTimeField(auto_now=True) 
    modified=models.DateTimeField(auto_now_add=True) 

Ich bin der angemeldete Benutzer-ID aus Sicht

def create_new_event(request, steps): 
if request.method == 'POST': 
    if(steps=="step_1"): 
     stepFirstForm = CreateEventStepFirstForm(request.POST) 
     if stepFirstForm.is_valid(): 
      eventStepFirst = Event(
       user_id = request.user.id, 
       event_auth_id = uuid4(), 
       event_title = request.POST['event_title'], 
       ticket_title = request.POST['ticket_title'], 
       category = request.POST['categories'], 
       event_summary = request.POST['event_summary'], 
       event_information = request.POST['event_information'], 
       restriction = request.POST['restrictions'], 
       notification_email = request.POST['notification_email'], 
       notification_frequency = request.POST['email_frequency'] 
      ) 

Zuordnung Aber sein geben Fehler mir

Cannot assign "42": "Event.user_id" must be a "User" instance.  
+1

Sie benötigen 'user_id = request.user' – serg

Antwort

1

Das Problem ist in diesem Code:

def create_new_event(request, steps): 
    if request.method == 'POST': 
     if(steps=="step_1"): 
      stepFirstForm = CreateEventStepFirstForm(request.POST) 
      if stepFirstForm.is_valid(): 
       eventStepFirst = Event(
        user_id = request.user.id, 
        event_auth_id = uuid4(), 
        event_title = request.POST['event_title'], 
        ticket_title = request.POST['ticket_title'], 
        category = request.POST['categories'], 
        event_summary = request.POST['event_summary'], 
        event_information = request.POST['event_information'], 
        restriction = request.POST['restrictions'], 
        notification_email = request.POST['notification_email'], 
        notification_frequency = request.POST['email_frequency'] 
       ) 

An der Stelle der "user_id = request.user.id" Sie sollten verwenden "user_id = request.user" oder „user_id = request.user.username ", weil im Bereich

user_id=models.ForeignKey(User, on_delete=models.CASCADE) 

Event-Modell, Sie als Fremdschlüssel von User-Modell zugeordnet user_id, so user_id Feld eine Benutzerinstanz erwartet, request.user.id nicht

Dank.

1

Das ForeignKey Feld ein Objekt vom Typ Benutzer erwartet, nicht die Benutzer-ID. Versuchen Sie, die Zuordnung user_id = request.user.id zu user_id = request.user zu ändern. Es könnte auch sinnvoll sein, das Feld in "user" umzubenennen, um in Zukunft Verwirrung zu vermeiden.

Verwandte Themen