我正在设置主题来拥有它的用户所有者。但是我想知道,我可以通过将Null=True设置为某个字段来添加没有所有者的new_topic吗?
class Topic(models.Model):
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.text
@login_required
def new_topic(request):
if request.method != 'POST':
form = TopicForm()
else:
form = TopicForm(request.POST)
if form.is_valid():
form.save()
错误提示: Not NULL约束失败。通过将new_topic设置为所有者,我知道解决方案,因为我将form.save()更改为以下内容:
new_topic = form.save(commit=False)
new_topic.owner = request.user
new_topic.save()
我清理了所有带有.owner后缀的代码片段。我猜测这个问题是因为我将主题所有者作为User类的关键字,User类现在有一个topic属性(字段),该属性在默认情况下设置为Null = False,因此任何new_topic都应该有一个用户作为其所有者。下面是我所做的:
class Topic(models.Model):
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
def __str__(self):
return self.text
但是,我仍然得到相同的错误..我猜是因为ForeignKey字段不支持Null = True?或者我想知道我是否应该更改用户的主题字段而不是主题的所有者字段?如果是这样,我应该如何更改用户的默认字段?谢谢!
发布于 2019-01-08 12:48:03
请在将用户更改为具有null=True
后运行python manage.py makemigrations
和python manage.py migrate
。
https://stackoverflow.com/questions/54085012
复制相似问题