Вот упрощенная версия одной из моих моделей:
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)
Этот класс управляет правилом импорта списка элементов из канала в базу данных.
Система администраторане позволит мне добавить ImportRule без выбора feed_provider_category, несмотря на то, что он объявлен в модели как nullable.База данных (SQLite на данный момент) даже проверяется нормально:
>>> .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 достаточно легко:
f = Feed.objects.get(pk=1)
i = ImportRule(name='test', feed=f)
i.save()
... но система администраторане позволю мне редактировать это, конечно.Как я могу заставить администратора разрешить мне редактировать / создавать объекты без указания этого внешнего ключа?