学习 Django - models.py ForeignKey 或 ManyToManyField 或者其他?
Learning Django - models.py ForeignKey or ManyToManyField or else?
正在尝试获得一些 Django 技能。我想要一个 class 与一个字段相乘。因此,我可以将不止一个连接到我的主 class,并可选择是否处于活动状态(以备将来需要)。
所以我的 subclass 看起来像这样:
class Subclass(models.Model):
STATUS=(
('A', Active),
('U', Unactive)
)
status = modelsCharField(max_length=1, choices=STATUS)
name = models.CharField(some options)
在主要 class 上,我想将其称为参考,但如果我选择:
field=models.ManyToManyField(Subclass)
它表示为第二个 table,对于每个实体,我必须从它的所有实体中进行选择。因此,如果我在 subclass 中有 2k 个实体,我必须滚动所有实体以找到我的连接(例如在默认管理页面中)
我不想这样。我只需要连接并显示在管理中的 2k 个实体中的 2 个。稍后只有那些状态为活动的才会显示在页面本身上。
所以我想我应该尝试一个 ForeignKey 关系:
field=models.ForeignKey(Subclass, on_delegate=models.CASCADE)
虽然在迁移过程中,这给我带来了关于 missing default values
的错误。
欢迎任何帮助,因为我现在有点卡住了。
非常感谢#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 对象并在同一个地方为其添加一个地址。我现在要做的就是格式化列表。
正在尝试获得一些 Django 技能。我想要一个 class 与一个字段相乘。因此,我可以将不止一个连接到我的主 class,并可选择是否处于活动状态(以备将来需要)。
所以我的 subclass 看起来像这样:
class Subclass(models.Model):
STATUS=(
('A', Active),
('U', Unactive)
)
status = modelsCharField(max_length=1, choices=STATUS)
name = models.CharField(some options)
在主要 class 上,我想将其称为参考,但如果我选择:
field=models.ManyToManyField(Subclass)
它表示为第二个 table,对于每个实体,我必须从它的所有实体中进行选择。因此,如果我在 subclass 中有 2k 个实体,我必须滚动所有实体以找到我的连接(例如在默认管理页面中)
我不想这样。我只需要连接并显示在管理中的 2k 个实体中的 2 个。稍后只有那些状态为活动的才会显示在页面本身上。
所以我想我应该尝试一个 ForeignKey 关系:
field=models.ForeignKey(Subclass, on_delegate=models.CASCADE)
虽然在迁移过程中,这给我带来了关于 missing default values
的错误。
欢迎任何帮助,因为我现在有点卡住了。
非常感谢#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 对象并在同一个地方为其添加一个地址。我现在要做的就是格式化列表。