【问题标题】:Assigning value to foreign key field为外键字段赋值
【发布时间】:2018-11-11 08:43:42
【问题描述】:

我在为 UserService 模型分配标题时遇到困难,这是另一个模型的外键。

models.py

class IndustryService(models.Model):    
    industryname = models.ForeignKey(Industry, on_delete=models.CASCADE)
    title = models.CharField(max_length=120)

class UserService(models.Model):  
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    title = models.ForeignKey(IndustryService, on_delete=models.CASCADE)

以下是视图中失败的代码部分:

    industryservices = IndustryService.objects.filter(industryname=industry)

    for service in industryservices:                
        try:
            qs = UserService.objects.get(user=user, title=service.title)
        except: 
            userserv = UserService.objects.create(user=request.user)
            userserv.title = service
            userserv.save()

我得到的错误如下:

NOT NULL constraint failed: accounts_userservice.title_id

根据我的测试,我将值分配给“标题”外键字段的方式是错误的(即这两行代码)。

    service2 = IndustryService.objects.get(title=service.title)
    userserv.title = service2

关于如何解决此问题的任何想法?谢谢!

【问题讨论】:

    标签: django django-views


    【解决方案1】:

    您进行了两次不必要的更新。一次性创建项目:

     userserv = UserService.objects.create(user=request.user, title=service)
    

    或者不保存就实例化,最后保存:

    userserv = UserService(user=request.user)
    userserv.title = service
    userserv.save()
    

    【讨论】:

    • 谢谢丹尼尔。我总是可以依靠您的绝妙建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2016-01-08
    • 1970-01-01
    • 2012-08-25
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多