我正在创建状态模型的脚本上工作。用户可以创建新状态。我已经检查了其他答案,但是它们似乎都是特定于代码的。
这是models.py
:
class wall_status(models.Model):
status = models.OneToOneField(
CustomUser,
on_delete=models.CASCADE,
primary_key=True,
)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
related_name="custom_student_status",
default=1,
on_delete=models.CASCADE)
new_status = models.CharField(max_length=2000, default='')
这是forms.py
:
class statusForm(forms.ModelForm):
new_status = forms.CharField( widget=forms.Textarea)
class Meta:
model = wall_status
fields = ('new_status', )
这是我的views.py
:
def add_status(request):
if request.method == "POST":
form = statusForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.user = request.user
post.save()
return redirect('wall')
else:
form = statusForm()
btn = 'Add'
title = 'Interests'
return render(request, 'user/profile_info_update.html', {'form': form, 'btn': btn,
'title': title})
这是模板:
{% block content %}
<h2>Sign up</h2>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">{{ btn }}</button>
</form>
{% endblock %}
现在,这里更加令人困惑的是,我能够成功地将记录添加到数据库中5次,然后它开始显示错误。如果我手动删除一条记录,然后再次从runserver
添加,它可以工作,但是表中的记录数一旦为5,我就会收到错误消息。有什么想法吗?
谢谢
答案 0 :(得分:0)
保存模型所需的表单时,您缺少状态字段
尝试:
status = models.OneToOneField(
CustomUser,
on_delete=models.CASCADE,
primary_key=True,
blank=True, null=True
)
答案 1 :(得分:0)
好的,所以如果有人请我解释我还是不明白。
所以这是解决我的问题的方法:
我从models.py
中删除了它:
status = models.OneToOneField(
CustomUser,
on_delete=models.CASCADE,
primary_key=True,
)
然后,当我运行makemigrations
时,它要求我为id
分配一个默认值(我猜是自动创建的主键)。
然后工作正常。如果有人知道这里发生了什么,请也向我解释。谢谢