学习Django - models.py ForeignKey或ManyToManyField还是?

时间:2016-12-21 22:23:35

标签: django python-3.x django-models many-to-many many-to-one

尝试获得一些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个实体,我必须滚动所有这些实体才能找到我的连接(例如在默认的管理页面中)

我不希望这样。我只需要连接并显示在admin中的2k个实体中的2个。稍后,那些状态为Active的人将显示在页面本身上。

所以我想我会尝试一个ForeignKey关系:

field=models.ForeignKey(Subclass, on_delegate=models.CASCADE)

这会让我在迁移过程中遇到missing default values错误。 任何帮助都会受到欢迎,因为我现在有点卡住了。

1 个答案:

答案 0 :(得分:0)

非常感谢#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对象并在同一个地方添加一个地址。我现在所要做的就是制作清单。