Ecco una versione semplificata di uno dei miei modelli:Perché l'admin di django non accetta chiavi esterne Nullable?
class ImportRule(models.Model):
feed = models.ForeignKey(Feed)
name = models.CharField(max_length=255)
feed_provider_category = models.ForeignKey(FeedProviderCategory, null=True)
target_subcategories = models.ManyToManyField(Subcategory)
Questa classe gestisce una regola per l'importazione di un elenco di elementi da un feed nel database.
Il sistema di amministrazione non mi consente di aggiungere una ImportRule senza selezionare un feed_provider_category nonostante sia dichiarato nel modello come annullabile. La banca dati (SQLite al momento) controlla anche fuori ok:
>>> .schema
...
CREATE TABLE "someapp_importrule" (
"id" integer NOT NULL PRIMARY KEY,
"feed_id" integer NOT NULL REFERENCES "someapp_feed" ("id"),
"name" varchar(255) NOT NULL,
"feed_provider_category_id" integer REFERENCES "someapp_feedprovidercategory" ("id"),
);
...
posso creare l'oggetto nella shell python abbastanza facilmente:
f = Feed.objects.get(pk=1)
i = ImportRule(name='test', feed=f)
i.save()
... ma il sistema di amministrazione non permetterà lo modifico, ovviamente. Come posso far sì che l'amministratore mi consenta di modificare/creare oggetti senza specificare quella chiave esterna?
che ha funzionato. Stavo pensando che null = True sarebbe stato sufficiente se non fosse un CharField, e che blank = True fosse specifico di CharField. Sembra che mi sbagliavo. –
Questo mi ha fatto chiedere, perché l'amministratore di Django non consente automaticamente valori vuoti per i campi null = True senza impostazione esplicita vuota = True? Troppa magia? – jholster
'null = True' funziona per il modello (database), mentre' blank = True' è per il modulo. C'è un'altra scelta per le forme: 'editable = False' – jpaugh