Python /new\u topic/NOT NULL约束处的IntegrityError失败:正在学习\u日志\u topic.owner\u id
我正在将主题设置为有其用户所有者。但是我想知道我是否可以通过将Null=True设置为某个字段来添加一个没有所有者的新主题Python /new\u topic/NOT NULL约束处的IntegrityError失败:正在学习\u日志\u topic.owner\u id,python,django,Python,Django,我正在将主题设置为有其用户所有者。但是我想知道我是否可以通过将Null=True设置为某个字段来添加一个没有所有者的新主题 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
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()
错误为:NOTNULL约束失败。通过将新主题设置为所有者,将form.save()更改为以下内容,我知道了解决方案:
new_topic = form.save(commit=False)
new_topic.owner = request.user
new_topic.save()
我清理了所有后缀为.owner的代码片段。我猜问题是因为当我用User类Forignkey topic owner时,User类现在有一个topic属性(field),默认设置为Null=False,因此任何新的主题都应该有一个用户作为其所有者。以下是我所做的:
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?或者我想知道是否应该更改用户的主题字段而不是主题的所有者字段?如果是,我应该如何更改用户的默认字段?谢谢大家! 在您将用户更改为具有
null=True
后,请运行python manage.py makemigrations
和python manage.py migrations
和python manage.py migrate
将用户更改为具有null=True
后,您是否运行了python manage.py makemigrations
!我忘了这个!我已经将其发布为answer.plus,如果您希望它像在序列化程序上一样在python级别抛出错误,请使用blank=True,null=True