Saya mencoba menyimpan objek M2M ( setel ke nilai default yang memiliki id = 1 ).

Masalah saya mendapatkan kesalahan berikut:

"" harus memiliki nilai untuk bidang "id" sebelum hubungan banyak-ke-banyak ini dapat digunakan.

Saya melihat umpan sebelumnya yang mencakup kesalahan yang sama tetapi tidak ada yang menjelaskan kapan itu terjadi di fungsi form_valid seperti yang terjadi pada saya

Kode saya adalah sebagai berikut:

  def form_valid(self,form):

    instance = form.instance
    instance.groups.set(1)
    instance.save()
    return super(UserCreateView,self).form_valid(form)
1
nassim 12 Mei 2021, 13:49

1 menjawab

Jawaban Terbaik

Anda harus menyimpan instance Anda terlebih dahulu, sehingga memiliki kunci utama, jika tidak, Anda tidak dapat membuat catatan di tabel persimpangan.

Dengan demikian Anda menerapkan ini dengan:

from django.http import HttpResponseRedirect

    def form_valid(self,form):
        instance = form.save()
        instance.groups.set(1)
        return HttpResponseRedirect(self.get_success_url())

Mengembalikan HttpResponseRedirect diperlukan di sini karena super().form_valid() akan menyimpan formulir lagi ke database, dan juga akan mengatur groups ke yang ditentukan dalam formulir.

1
Willem Van Onsem 12 Mei 2021, 10:51