为外键字段赋值



我很难为UserService模型分配标题,它是另一个模型的外键。

型号.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

根据我的测试,我为"title"外键字段赋值的方式是错误的(即这两行代码(。

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

有没有想过我该怎么解决这个问题?谢谢

您正在进行两次不必要的更新。要么一次创建项目:

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

或者实例化而不保存,然后在最后保存:

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

最新更新