![](/img/trans.png)
[英]django.db.utils.IntegrityError: NOT NULL constraint failed: accounts_user.user_id
[英]django.db.utils.IntegrityError: NOT NULL constraint failed: user.id
即使我指定了作者,我也不知道為什么會導致錯誤。 我會很感激你的幫助。
model & 表格
class SuperTitle(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='debate_author')
super_title = models.CharField(max_length=100)
liker = models.ManyToManyField(User, related_name='debate_liker')
def __str__(self):
return self.super_title
class SuptitForm(forms.ModelForm):
class Meta:
model = SuperTitle
fields = ['super_title']
視圖.py
def create(request):
...
dic = {'super_title' : request.POST.get('sup_title')}
sup_form = SuptitForm(dic)
if sup_form.is_valid():
sup_form.author = request.user
sup_form.super_title = ...
sup_form.save()
...
在 /polls/debate/create/ NOT NULL 約束返回 IntegrityError 失敗:polls_supertitle.author_id
您會收到此錯誤,因為您想在沒有作者的情況下保存表單(在數據庫中創建新的 SuperTitle 對象)。 您需要以某種方式傳遞作者反對或 id 來形成。 如果 request.user 是作者,我推薦表格:
class SuptitForm(forms.ModelForm):
class Meta:
model = SuperTitle
fields = ['super_title', 'author']
widgets = {'author': forms.HiddenInput()}
並認為:
def create(request):
if request.method == 'POST':
sup_form = SuptitForm(request.POST)
if sup_form.is_valid():
sup_form.save()
else:
sup_form = SuptitForm(initial={'author': request.user}
...
可能您沒有經過身份驗證的用戶,因此request.user
返回無。
使用login_required
裝飾器,以便只有經過身份驗證的用戶才能訪問此 function。
from django.contrib.auth.decorators import login_required
@login_required
def create(request):
........
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.