2009-12-23 11 views
6

Ciao, ho un modello che contiene 2 campi da molti a molti. uno è un campo standard di m2m che non usa tabelle passanti, mentre l'altro è un po 'più completo e ha una tabella di passaggio. Sto usando Django forms.modelform per visualizzare e salvare i moduli. Il codice che devo salvare il modulo èDjango Forms save_m2m

if form.is_valid(): 
     f = form.save(commit=False) 
     f.modified_by = request.user 
     f.save() 
     form.save_m2m() 

Quando provo a salvare il modulo ottengo il seguente errore:

non può impostare i valori su un ManyToManyField che specifica un modello di intermediazione.

So che questo sta accadendo quando faccio il form.save_m2m() a causa della tabella di passaggio. Quello che mi piacerebbe fare è dire a Django di ignorare il campo di m2m con il tavolo di passaggio, ma salvare il campo di m2m senza il tavolo di passaggio. Posso quindi continuare a salvare manualmente i dati per il campo della tabella Through.

Grazie

risposta

0

non è possibile salvare il m2m "senza la tabella attraverso"

i dati che si desidera salvare è memorizzato nella tabella tramite (e solo nella tabella tramite)

4

Se si dispone di un modello con più campi uno viene eseguito con una tabella di passaggio e l'altro è una normale relazione molti-a-molti senza una tabella di passaggio. Puoi ancora usare save_m2m() per salvare quello normale. Aggiungi semplicemente i campi passanti al tuo elenco di esclusione sul modulo.

Aggiungere all'interno della vostra classe form:

class Meta: 
    model = YourModel 
    exclude = ('m2mthroughfield',)