2016-10-11 101 views
1

每當我創建一個新的PreDefinedSet時,它會抓取我在數據庫中添加的所有設備。Django多對多字段

問題是如何讓它變成空白,並且是否可以編輯多對多字段中的內容?

我的目標是創建一個可以由用戶預定義的設備列表。

這裏是我的模型:

class Equipment(models.Model): 

    name = models.CharField(max_length = 50) 

class PreDefinedSet(models.Model): 

    name = models.CharField(max_length = 100) 
    Equipments = models.ManyToManyField(Equipment) 
+0

你是什麼意思「它抓住所有......「? – McAbra

回答

0

我想我明白你正在嘗試做的。你的模型看起來很好 - 我沒有看到任何理由爲什麼PreDefinedSet會在創建時添加相關數據(如果你在那裏沒有做任何有趣的事情)。

class Equipment(models.Model): 
    name = models.CharField(max_length = 50) 

class PreDefinedSet(models.Model): 
    name = models.CharField(max_length = 100) 
    equipments = models.ManyToManyField(Equipment, related_name='sets') 

現在,如果你想用數據來操作:

eq = Equipment.objects.get(name='something') 
user_set = PreDefinedSet.objects.create(name='first_set') 

user_set.equipments.add(eq) 

user_set.equipments.all() # will return a QuerySet with one Equipment 

另外注意到related_name感謝您可以反向查詢,這樣的:

eq.sets.all() # will return a QuerySet of the sets that tool is in 

更多有關如何操縱M2M領域:https://docs.djangoproject.com/en/dev/topics/db/models/#many-to-many-relationships