2014-05-17 92 views
0

我正在尋找將項目添加到django模型中的manytomany字段。目前正在創建新的標籤對象,但當我在管理中調用保存時,它不會被添加到MyModel。我沒有從我的代碼中得到任何錯誤,有什麼想法?將對象添加到保存在Django中的ManyToMany字段中

class Tag(models.Model): 
    text = models.SlugField(max_length=50, unique=True) 


class MyModel(models.Model): 
    tags = models.ManyToManyField("Tag", blank=True) 

    def save(self, *args, **kwargs): 
     if (self.tags.count() == 0): 
      tag, created = Tag.objects.get_or_create(text=get_word()) 
      tag.save() 
      self.tags.add(tag) 

     return super(MyModel, self).save(*args, **kwargs) 
+0

你是如何在管理使用呢?你如何輸入標籤文字?什麼是'get_word?' –

+0

嗨,丹尼爾,我只是使用django管理員輸入我的標記文本。我也使用它來創建和保存使用我的模型的更改。 get_word()只是返回一個基於其他不太相關的邏輯的字符串。據我所知,模型保存後,m2m字段將被保存。看起來我需要找出解決方法。 – Gunther

回答

0

在首先你要保存爲MyModel實例,並在下一次使用self.tags.add(標籤)

class MyModel(models.Model): 
    tags = models.ManyToManyField("Tag", blank=True) 

    def save(self, *args, **kwargs): 
     super(MyModel, self).save(*args, **kwargs) # saving MyModel instance 

     tag, created = Tag.objects.get_or_create(text=get_word()) 
     tag.save() 
     self.tags.add(tag) # adding m2m to saved instance MyModel 

     return self 
+0

感謝Slawek,我仍然沒有成功。經過進一步的研究後,我發現我所做的事情是不可能的,因爲在保存模型後,很多領域都會被保存下來。 – Gunther

+0

讓我看看你的代碼。 –

相關問題