【问题标题】:Learning Django - models.py ForeignKey or ManyToManyField or else?学习 Django - models.py ForeignKey 或 ManyToManyField 还是其他?
【发布时间】: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


【解决方案1】:

非常感谢#AMG。我按照你的建议做了,现在可以了。 在我的models.py中

class Person(models.Model):
name = models.CharField(max_length=200, default="Name")
phone = models.CharField(max_length=12, default="+22123456789")
...
class Adress(models.Model):
...
person = models.ForeignKey(Person, on_delete=models.CASCADE)
...

还有我的 admin.py

from django.contrib import admin
from .models import Adress
from .models import Person

class AdressInline(admin.TabularInline):
model = Adress

class PersonAdmin(admin.ModelAdmin):
inlines = [
AdressInline    
]

admin.site.register(Person, PersonAdmin)

这让我可以在同一个地方添加一个 Person 对象并为其添加地址。我现在要做的就是格式化列表。

【讨论】:

    猜你喜欢
    • 2011-01-08
    • 1970-01-01
    • 2019-08-10
    • 2015-08-15
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多