在创建模型实例时如何填充ManyToMany字段?

时间:2014-10-31 10:21:39

标签: python django django-orm

我想创建这样的模型实例:

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)

1 个答案:

答案 0 :(得分: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()