我正在设置主题以拥有其用户所有者。但是我想知道是否可以通过将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后缀的代码段。我猜是问题所在,因为当我与用户类一起使用Forignkey主题所有者时,该用户类现在具有一个主题属性(字段),默认情况下将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?还是我想更改用户的主题字段而不是主题的所有者字段?如果是这样,如何更改用户的默认字段?谢谢!
答案 0 :(得分:1)
将用户更改为python manage.py makemigrations
后,请运行python manage.py migrate
和null=True
。