我正在尝试在我的NoteForm中填充字段'owner'。我在文档中读到我需要使用Admin。但是我仍然会收到此错误:note_note.owner_id可能不是NULL。需要帮忙。代码:
forms.py:
class NoteForm(forms.ModelForm):
class Meta:
model = Note
fields = ('title','body')
models.py:
class Note(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
cr_date = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, blank=False)
admin.py
class NoteAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
obj = form.save(commit=False)
obj.owner = request.user
obj.save()
def save_formset(self, request, form, formset, change):
instances = formset.save(commit=False)
for instance in instances:
instance.user = request.user
instance.save()
else:
fromset.save_m2m()
admin.site.register(Note, Noteadmin)
views.py:
def create(request):
if request.POST:
form = NoteForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponceRedirect('/notes/all')
else:
form = NoteForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('create_note.html', args)
答案 0 :(得分:1)
我不明白管理员在这里的意思。从代码中,我理解的是您为您的网站创建一个简单的django表单并在表单提交时收到错误。如果是这种情况,解决方案很容易安静。生成此错误是因为您尝试在Note
模型中保存记录而不引用User
。由于外键字段存在db约束,因此会引发错误。解决方案很简单,只需将owner
添加到表单中的字段列表中,或修改save
方法即可将所有者分配给注释。如果您将使用第一个选项,则用户将能够查看并选择所有者。如果您想预先填充该特定字段,请传递initial value to the form。