0

NoteForm の「所有者」フィールドに入力しようとしています。そのために管理者を使用する必要があるというドキュメントを読みましたが、それでもこのエラーが発生します: note_note.owner_id は NULL ではない可能性があります。助けが必要。コード:

フォーム.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)

ビュー.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)
4

1 に答える 1

1

ここの管理者のポイントがわかりません。コードから、私が理解したのは、サイト用の単純な django フォームを作成し、フォーム送信時にエラーが発生したことです。その場合、解決策は簡単です。Noteこのエラーは、 を参照せずにモデルにレコードを保存しようとしたために生成されますUser。外部キー フィールドに db 制約があるため、エラーが発生します。解決策は簡単ですowner。フォームのフィールドのリストに追加するかsave、メモに所有者を割り当てる方法を変更するだけです。最初のオプションを使用する場合、ユーザーは所有者を表示して選択できます。その特定のフィールドに事前入力する場合は、フォームに初期値を渡します。

于 2013-11-29T18:41:32.213 に答える