Modellerimden birinin basitleştirilmiş bir sürümü:Neden django admin NULL olabilecek yabancı anahtarları kabul etmiyor?
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)
Bu sınıf, bir feed'in öğelerinin listesini veritabanına içe aktarma kuralını yönetir.
Yönetici sistemi, modelde null olarak bildirilmesine rağmen bir feed_provider_category seçmeden bir ImportRule eklememe izin vermez. Veritabanını (şu anda SQLite) bile kontrol eder:
>>> .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"),
);
...
Python kabuğundaki nesneyi kolayca oluşturabilirim:
f = Feed.objects.get(pk=1)
i = ImportRule(name='test', feed=f)
i.save()
... ama yönetici sistem izin vermiyor tabi ki onu düzenleyeyim. Bu yabancı anahtarı belirtmeden nesneleri düzenlememe/oluşturma izni vermek için yöneticiye nasıl ulaşabilirim?
. Null = True, CharField olmasaydı yeterli olurdu ve bu boş = True CharField'a özgüydi. Yanılıyormuşum gibi görünüyor. –
Bu beni merak etti, neden Django'nun yöneticisi boş değerlere boş değerlere otomatik olarak izin vermiyor? = Boş alanları açıkça ayarlamadan True = True? Çok fazla büyü mü? – jholster
'null = True' model (veritabanı) için çalışıyor, boş ise" True "biçimindedir. Formlar için başka bir seçenek daha var: 'düzenlenebilir = Yanlış ' – jpaugh