Python Django claas管理自动填充用户字段

Python Django claas管理自动填充用户字段,python,django,forms,admin,auto-populate,Python,Django,Forms,Admin,Auto Populate,我正在尝试填充my NoteForm中的字段“owner”。我在文档中读到我需要使用管理员来完成这项工作。但是我仍然得到了这个错误:note\u note.owner\u id可能不是空的。我需要帮助。 代码: forms.py: class NoteForm(forms.ModelForm): class Meta: model = Note fields = ('title','body') models.py: class Note(models.Model):

我正在尝试填充my NoteForm中的字段“owner”。我在文档中读到我需要使用管理员来完成这项工作。但是我仍然得到了这个错误:note\u note.owner\u id可能不是空的。我需要帮助。 代码: 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)

class NoteAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
       form.owner = request.user
       form.save()
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)

我还尝试在admin.py中编写NoteAdmin类,以防万一。同样的错误,我做错了什么?我只是在看文档。

您正在尝试保存
注释
而不保存
所有者
字段,错误说明了这一点。试试看:

if form.is_valid():
    obj = form.save(commit=False)
    obj.owner = request.user
    obj.save()

另一种方法是为
owner
字段设置
null=True
,如果您可以在没有所有者的情况下写入数据。

没有仍然相同的错误:(.不,我需要这个,这样我就可以为每个用户过滤注释。因为我在django中找不到任何其他方法来为用户提供单独的数据。“for start”是什么意思?当您通过
create
函数创建对象时,您应该在将数据保存到模型中之前定义该字段的
owner
。否则,您将得到错误。s你忘了最后的评论。你到底需要什么?其他信息?考虑到在添加所有者字段之前,注释被创建得很好。问题是我没有得到用户ID或某物。我也试过了。我把所有的管理类都放在admin。Py上,我本来应该有的。我不知道URL有什么问题。你在尝试。g通过admin保存
Note
条目?这是自动生成此字段的唯一方法ModelAdmin。这里是ModelAdmin方法。还有其他方法吗?我做错了什么?