这是我的一个模型的简化版本:
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)
此类管理用于将Feed中的项目列表导入数据库的规则。
管理系统不允许我在不选择feed_provider_category的情况下添加ImportRule,尽管在模型中将其声明为可为空。数据库(目前为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 shell中创建对象:
f = Feed.objects.get(pk=1)
i = ImportRule(name='test', feed=f)
i.save()
...但是管理系统当然不允许我对其进行编辑。
如何让管理员允许我编辑/创建对象而无需指定该外键?
最佳答案
blank=True
怎么样?从Django's docs:
如果为True
,则该字段允许为空白。默认值为False
。