我很难为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()