Django claas Admin自动填充用户字段

时间:2013-11-28 14:47:09

标签: python django forms admin auto-populate

我正在尝试在我的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)

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类,以防万一。同样的错误。我做错了什么?我只是关注文档。

1 个答案:

答案 0 :(得分:0)

您尝试保存Note没有owner字段,错误说明了。试试:

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

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