[Python] [Django] Interfaccia admin per relazione uno a molti

Stefano e.tino a email.it
Gio 27 Lug 2006 12:37:16 CEST


Carlo C8E Miron ha scritto:
> On 7/18/06, Stefano <e.tino a email.it> wrote:
>> Una richiesta d'aiuto per gli utilizzatori di Django (quanti siete qui
>> in lista?)
> 
> Pochi, pare. Oppure, molto silenziosi. ;)
> Scherzi a parte, rispondo con un ritardo mostruoso. Avrai gia`
> risolto, suppongo...
> 

Ritorno sui miei passi... il problema mi si ripresenta

>> Sto creando l'interfaccia di amministrazione per due tabelle con
>> relazione uno a molti, la prima č cosė definita in models.py
> [snip]
>> la seconda
> [snap]
>> Con il parametro "edit_inline" nell'interfaccia di amministrazione viene
>> visualizzato il campo "Riga" ma quando compilo il campo e salvo, la riga
>> caricata non viene visualizzata e mi presenta i dati di Testata con la
>> riga di dettaglio vuota senza nessun messaggio di errore.
>> Qualche suggerimento?
> 
> Non riesco a riprodurre il tuo problema. Direi che funziona
> perfettamente secondo attese.
> 


In questo secondo esempio no...

Nello specifico aggiungendo un campo non obbligatorio 'valore_riga' a 
Dettaglio, se questo non viene compilato nella interfaccia admin, il 
record non viene salvato nel DB. Riscrivo l'esempio completo.


class Testata(models.Model):
     data = models.DateField('Data')
     descrizione = models.CharField('Descrizione', maxlength=50)

     def __str__(self):
         return self.descrizione

     class Admin:
         pass

class Dettaglio(models.Model):
     id_testata = models.ForeignKey(Testata, edit_inline=models.TABULAR,
         num_in_admin=1,
         min_num_in_admin=1,
         num_extra_on_change=1)
     descrizione_riga = models.CharField('Riga', maxlength=50, core=True)
     valore_riga = models.IntegerField('Valore', core=True, blank=True, 
null=True)

     def __str__(self):
         return self.descrizione_riga

Lo schema db creato per la tabella dettaglio č questo

CREATE TABLE "unomolti_dettaglio" (
    "id" integer NOT NULL PRIMARY KEY,
    "id_testata_id" integer NOT NULL,
    "descrizione_riga" varchar(50) NOT NULL,
    "valore_riga" integer NULL
)


Nel tutorial di Django 
http://www.djangoproject.com/documentation/tutorial2/#adding-related-objects

C'č scritto (tradotto) che "la presenza di almeno uno dei campi aggiunge 
un nuovo dettaglio, la cancellazione di entrambi significa la 
cancellazione del record."

Cosė non sembra essere, almeno per la parte dell'inserimento. Qualche 
consiglio?

Grazie di nuovo.

Saluti
Stefano


Maggiori informazioni sulla lista Python