2014-10-31 40 views
0

我想創建模型實例是這樣的:創建模型實例時如何填寫ManyToMany字段?

new_tweet = Tweet.objects.create(text = tweet_object.text, date = tweet_object.date, username = tweet_object.username, retweet = tweet_object.retweet.all(), is_ret = True) 

這一切都順利,直到此:retweet = tweet_object.retweet.all()。它返回此錯誤:'retweet' is an invalid keyword argument for this function

這是一個ManyToMany字段。那麼在創建新模型實例時如何填充該字段?

順便說一句tweet_object.retweet.all()由許多retweet對象組成。

編輯:

型號:

class Tweet(models.Model): 
    text = models.CharField(max_length=140) 
    date = models.DateTimeField(auto_now_add=True) 
    username = models.CharField(max_length=140) 
    favourite = models.ManyToManyField(Favourite) 
    retweet = models.ManyToManyField(Retweet) 
    replies = models.ManyToManyField('Tweet') 
    is_ret = models.BooleanField(default=False) 

    def __unicode__(self): 
     return self.username 

而且tweet_object,這只是另一種鳴叫:

tweet_object = Tweet.objects.get(id=tweet_id) 
+0

是什麼tweet_object?你可以發佈推特模型嗎? – 2014-10-31 10:25:38

+0

添加tweet_object和模型 – user3767139 2014-10-31 10:27:37

回答

1

我覺得你應該先創建分享Tweet對象,然後就可以建立與關係轉推。

更多信息,你可以在這裏找到:https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/

這是很乾脆:

tweet_object = Tweet.objects.get(id=tweet_id) 

new_tweet = Tweet.objects.create(text = tweet_object.text, date = tweet_object.date, username = tweet_object.username, is_ret = True) 

for retweet in tweet_object.retweet.all(): 
    new_tweet.retweet.add(retweet) 

new_tweet.save() 
+0

我認爲你的'for'循環不會以這種方式工作。你不能遍歷'tweet_object.retweet'。應該在我看來:'tweet_object.retweet.all()'。 – cezar 2014-10-31 10:45:36

+1

也許'for'循環甚至可以放棄:'new_tweet.retweet.add(tweet_object.retweet.all())' – cezar 2014-10-31 10:48:55

+0

代碼示例中存在拼寫錯誤。在'for'循環中有'tweet_objects.retweet.all()',但它應該是'tweet_object.retweet.all()'。它會拋出一個錯誤,因爲沒有定義tweet_objects。 – cezar 2014-10-31 13:01:33

相關問題