如何在创建模型实例时填充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
这是一个多对多的字段。那么在创建新的模型实例时,应该如何填充这个字段呢?
顺便提一下,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)
1 个回答
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()