2016-10-18 42 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。将字段重命名为“用户”以避免未来混淆也可能是有意义的。

相关问题