我是Django的新手,我正在尝试构建一个遵循这种模式的数据层次结构:
会有几个社区 - 比如Huntsville
,Phoenix
和Madison
。
每个社区都可以有几个不同的Categories
。例如,Huntsville
可能有Hunting
,fishing
和skiing
- Phoenix
可能正在运行,biking
和swimming
}。然后,每个特定类别将具有许多不同的细节视图。我试图通过以下方式实现这一目标:
from django.db import models
class Community(models.Model):
name = models.CharField(max_length=200) #arbitrary max length
class Category(models.Model):
community = models.ForeignKey(Community)
category = models.CharField(max_length=200) #arbitrary max length
class Detail_View(models.Model):
category = models.ForeignKey(Category)
detailView = models.CharField(max_length=200) #arbitrary max length
website = models.CharField(max_length=200) #arbitrary max length
但它似乎并没有真正正常工作,我无法弄清楚原因。
有什么想法吗?
答案 0 :(得分:5)
我不确定我是否完全理解你所寻找的行为,但无论如何我都有一些建议。
首先,当你真正想要多对多时,看起来你正在实现一对多。
查看http://docs.djangoproject.com/en/1.3/ref/models/relations/
根据该链接,使用models.ManyToManyField
代替models.ForeignKey
此外,如果您打算将其定义为一对多,您可能不希望Category
引用Community
。使用短语“has a”或“has many”来确定这一点。由于Community
“具有”Category
,ForeignKey
(或ManyToManyField
)应在Community
模型上定义,而不是Category
之一。
我强烈建议您查看免费提供的Django Book项目,尤其是关于Advanced Models
的章节希望这有帮助!