2015-09-04 100 views
0

我正在與非常有聯繫的關係一起努力。我想有這樣的:具有多個值和多個所有者的Django字段

class Category(models.Model): 
    name = models.CharField(max_length=128, unique=True) 
    descriptions = models.Listfield? #or something like this 

class Descriptions(models.Model): 
    name = models.CharField(max_length=128, unique=True) 
    categories = models.Listfield? #or something like this 

的想法是,類別將有一個可以單擊,這將使你與描述的類別列表,反之亦然描述。因此,如果類別像[大象,卡車,樹]和描述像[重,軀幹],我想要它設置Elephant.descriptions = [Heavy,Trunk]和Heavy.categories = [大象,卡車]

回答

1

你可以使用一個ManyToManyField因爲它是一個多對多的關係(一類能與許多描述相關聯,一個描述可以與許多類別

class Category(models.Model): 
    name = models.CharField(max_length=128, unique=True) 


class Description(models.Model): 
    name = models.CharField(max_length=128, unique=True) 
    categories = models.ManyToManyField(Category, blank=True) 

使用這種方法有關,你只需要添加ManyToManyField在其中一個模型中,描述或類別

然後你c烏爾德做到以下幾點:

new_cat = Category(name = 'cat1') 
new_cat.save() 
new_desc = Description(name = 'desc1') 
new_desc.save() 
new_desc.categories.add(new_cat) 

,他們會相互關聯,隨着Category模型中沒有需要一個ManyToManyField

然後,您可以訪問new_desc與其相關的所有類別:

new_desc.categories.all() 

new_cat.description_set.all() 

用於與new_cat相關的所有描述。

它將雖然返回一個QuerySet,不是

更多信息上ManyToManyField列表:

https://docs.djangoproject.com/en/1.8/topics/db/examples/many_to_many/

+0

你會建議我這樣做與類模型,以及或者只是描述模型? – Rob

+1

@Rob現在更多信息 – dietbacon

+1

@Rob如果你已經試過這些代碼,我忘了保存這些東西,你必須保存它。我現在修復它 – dietbacon