2011-05-17 90 views
4

我是新来的Django,我试图建立符合此模式的数据层次:Django的数据层次的问题

会有几个社区 - 说HuntsvillePhoenixMadison

这些社区中的每一个都可以有几个不同的Categories。例如,Huntsville可能有Hunting,fishingskiing - 和Phoenix可能有运行,bikingswimming。然后,每个特定的类别将有许多不同的细节视图。我试图做到这一点:

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 

但它似乎并没有真正正常工作,我不明白为什么。

有什么想法?

回答

5

我不确定我完全理解你要找的行为,但我仍然有一些建议。

首先,当你真的想要多对多时,看起来你正在实现一对多。

退房http://docs.djangoproject.com/en/1.3/ref/models/relations/

每链接,使用models.ManyToManyField代替models.ForeignKey

此外,如果你的意思是将其定义为一个对许多人来说,你可能不希望Category引用Community。使用短语“有一个”或“有许多”来确定这一点。由于Community“具有”Category,ForeignKey(或ManyToManyField)应该在Community模型上定义,而不是Category

我强烈建议考虑看看免费提供的Django Book项目,特别是一章Advanced Models

希望这有助于!