2014-04-10 190 views
1

我需要一些問題的幫助。Python/Django迭代ManyToMany相關領域

我有三種模型,Reference,Relation ans Circuit。關係是第一個內聯。電路和關係是相關的。我必須做的是: - 我在參考文獻1中,並且我在Relation1中選擇了一些Circuits到RelationN。 - 保存時,我需要將Relation1保存到RelationN,以及其他RelationFirst(保存參考模型時創建),其中必須包含該參考的其他關係中存在的所有電路。

,我現在所擁有的代碼,誰不這樣做,就是:

class Reference(models.Model): 
    title = models.CharField(max_length=200, verbose_name = _('title')) 

    def __unicode__(self): 
     return u"\n %s" %(self.title) 

    def save(self, force_insert=False, force_update=False, *args, **kwargs): 
     is_new = self.id is None 
     super(Reference, self).save(force_insert, force_update, *args, **kwargs) 
     if is_new: 
      Relation.objects.create(reference=self, first = True) 
      relation = Relation.objects.get(reference=self, first = True) 
      circuit = Circuit.objects.get(name = '0') 
      relation.circuit.add(circuit) 


class Relation(models.Model): 
    first = models.BooleanField() 
    reference = models.ForeignKey(Reference) 
    circuit = models.ManyToManyField('Circuit', verbose_name = _('Circuits'), null=True, blank=True, related_name = 'relation_circuit') 

    def __unicode__(self): 
     return u"%s" %(self.reference) 

    def save(self, force_insert=False, force_update=False, *args, **kwargs): 
     relation1 = Relation.objects.get(reference=self.reference, first = True) 
     super(Relation, self).save(force_insert, force_update, *args, **kwargs) 
     for circ in self.circuits: 
      circuit = Circuit.objects.get(pk = circ) 
      relation1.circuit.add(circuit) 

任何幫助嗎?因爲我無法迭代ManyToManyRelatedField,所以我不知道該怎麼做。非常感謝你!

回答

3

你應該這樣做的:

for circ in self.circuit.all(): 
+1

做究竟是什麼?應該更改哪部分代碼?這是如何解決OP問題的?這些回覆中缺少的東西很少。 – UmNyobe

+0

你想重新發佈一個字符串的所有代碼?所以它必須在第3個字符串中保存Relation類的方法。 –

+0

不,但通過查看您的帖子,沒有線索知道正在解決什麼問題。你可以這樣說:你的代碼中的問題是'for self.circuit:'中的循環。它不工作,因爲等等等等......你應該在self.circuit.all()中使用'for circ:'而不是 – UmNyobe