masalah pembersihan model Django

Saya mengerjakan dua model yang dinilai melalui banyak ke banyak, berikut kode yang relevan:

class Curso(models.Model):
    horarios = models.ManyToManyField(Horario, related_name = 'cursos')
    ...
    def clean(self):
       ...
       self.horarios.all()
    def save(self,*args,**kwargs):
        self.full_clean()
        ...

Horarios telah ditentukan, sekarang ketika saya mencoba membuat kursor di antarmuka admin saya mendapatkan kesalahan saat menunjuk ke self.horarios.all():

'Curso' instance needs to have a primary key value before a many-to-many relationship can be used.

Dan masuk akal karena belum disimpan, jadi masalah saya adalah, bagaimana cara mengakses nilai horarios di instance Curso yang sedang disimpan?.

Terima kasih sebelumnya


person loki    schedule 16.05.2012    source sumber
comment
Bukankah model Horario memiliki metode bersihnya sendiri? Mengapa Anda perlu mengerjakannya dalam metode Curso clean?   -  person jdi    schedule 17.05.2012
comment
@jdi horario = jadwal, saya perlu horario untuk tidak hadir di beberapa instance Curso secara bersamaan, begitulah cara saya memvalidasinya, mengulanginya.   -  person loki    schedule 17.05.2012
comment
Kemungkinan duplikat: stackoverflow.com/questions/6090859/   -  person jdi    schedule 17.05.2012


Jawaban (1)


Kesalahannya tampaknya cukup jelas bagi saya -- Anda tidak bisa memanggil ManyToMany sebelum suatu objek disimpan.

Anda dapat mereproduksi kesalahan: Curso().horarios

Jelas Anda tidak bisa melakukan validasi pada hubungan yang tidak mungkin ada, jadi cukup lengkapi panggilan Anda dengan if self.pk

if self.pk:
   self.horarios.all()
person Yuji 'Tomita' Tomita    schedule 17.05.2012