【发布时间】:2017-05-07 11:25:05
【问题描述】:
尝试获得一些 Django 技能。我想有一堂课,其中一个字段被相乘。因此,我可以将不止一个连接到我的主类,并且可以选择是否处于活动状态(以备将来需要)。
所以我的子类看起来像这样:
class Subclass(models.Model):
STATUS=(
('A', Active),
('U', Unactive)
)
status = modelsCharField(max_length=1, choices=STATUS)
name = models.CharField(some options)
在主课上,我想将其称为参考,但如果我选择:
field=models.ManyToManyField(Subclass)
它表示为第二个表,对于每个实体,我必须从它的所有实体中进行选择。因此,如果我在子类中有 2k 个实体,我必须滚动所有这些实体才能找到我的连接(例如在默认管理页面中)
我不想那样。我只需要 2k 个实体中的 2 个连接并显示在管理员中。稍后,只有那些状态为 Active 的才会显示在页面本身上。
所以我想我应该尝试一个 ForeignKey 关系:
field=models.ForeignKey(Subclass, on_delegate=models.CASCADE)
这给了我在迁移过程中关于missing default values 的错误。
欢迎任何帮助,因为我现在有点卡住了。
【问题讨论】:
-
您实际上想要完成什么?您的代码也有很多拼写错误和格式问题。你的主类(主模型),是否需要指向你的子类(子模型)的多条记录?
-
这只是例子,错别字是我的事。必须一直和他们打架:(我的任务是编写类似...地址簿的代码?所以你有一个人和他的地址以及他的旧地址。所以主类是人,子类是地址列表。但我只需要那些相关的。
-
如果类似人员和地址,Address 将有一个 ForeignKey(Person),这将为您设置您所追求的。使用 InlineModalAdmin。在这种情况下,您可能不想使用多对多,因为每个地址都属于一个人(很可能)。比萨和浇头是多对多的示例(许多不同比萨类型的浇头)docs.djangoproject.com/en/1.10/ref/contrib/admin/… 文档,用于在管理员中处理。
-
@AMG oohhhh....好吧。
标签: django python-3.x django-models many-to-many many-to-one