2017-06-09 79 views
1

我有以下型號:Django的多對多字段不保存

class Offering(models.Model): 
    entity = models.OneToOneField('companies.entity') 
    company_type = models.ManyToManyField(CompanyTypeChoice, blank=True) 

@python_2_unicode_compatible 
class Tag(models.Model): 
    word = models.CharField(max_length=64) 

@python_2_unicode_compatible 
class Entity(models.Model): 
    tags = models.ManyToManyField(Tag,related_name='companies', blank=True, null=True) 

class CompanyTypeChoice(models.Model): 
title = models.CharField(max_length=64) 

我有以下的循環,我想創建一個M2M標籤關係:

offerings = Offering.objects.all() 
    for o in offerings: 
     for ct in o.company_type.all(): 
      tag = Tag.objects.get(word=ct.title) 
      e = Entity.objects.get(pk=o.entity.id) 
      e.tags.add(tag) 

這不救M2M關係。我究竟做錯了什麼?

+0

Django是否設置爲自動提交? 'CompanyTypeChoice'模型也很好嗎? –

+0

@BishwasMishra。我沒有改變autocommit的默認值。 CompanyType具有值並正在饋送循環。我也發佈了CompanyTypeChoice模型。 – Atma

回答

0

問題是,此循環運行一次並輸入了所有值。重複項沒有再次運行,也沒有發生錯誤。

0

您已爲實體模型中的標籤指定related_name =「companies」。所以,這就是爲什麼你的多重價值沒有得到保護。爲了解決這個問題,更換您的線路,

e.tags.add(tag) 

用,

e.companies.add(tag) 

我希望這有助於。