2016-10-18 39 views
1

我已經檢查了與我的問題相關的所有解決方案,但沒有人工作,我有一個事件表,我在其中分配用戶的ID 。事件模型不能分配「42」:「Event.user_id」必須是「用戶」實例

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) 

我分配登錄的用戶ID從視圖

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'] 
      ) 

但它給我的錯誤

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

您需要'user_id = request.user' – serg

回答

1

的問題是在此代碼:

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'] 
       ) 

在 「USER_ID = request.user.id」 你應該用 「USER_ID = request.user」 或「USER_ID = request.user.username的地方「因爲在外地

user_id=models.ForeignKey(User, on_delete=models.CASCADE) 
事件模型

,你指定的user_id爲用戶模型的外鍵,所以USER_ID場期待的用戶實例,而不是request.user.id

感謝。

1

的ForeignKey的領域期待User類型的對象,不是用戶ID。嘗試更改作業user_id = request.user.iduser_id = request.user。將字段重命名爲「用戶」以避免未來混淆也可能是有意義的。

相關問題