2016-04-30 110 views
0

我有2个表:RawTweet和PertinentTweet,PertinentTweet有一个引用Rawtweet中的tweetID的外键。我想在RawTweet中选择一些推文并将它们存储在PertinentTweet中。我使用queryset来做到这一点。如何在包含外键的表中插入查询集结果django

我的2类:

class RawTweet(models.Model): 
    tweetID = models.BigIntegerField(primary_key=True) 
    date = models.CharField(max_length = 100, blank=True) 
    text = models.TextField(max_length = 200, blank=True) 
    pseudo = models.CharField(max_length = 100, blank=True) 
    userLocation = models.CharField(max_length = 100, blank=True) 
    tweetLocation = models.CharField(max_length = 100, blank=True) 
    images = models.ImageField(upload_to = 'images/', blank=True) 
    isretweeted = models.NullBooleanField() 
    hashtags = models.CharField(max_length = 100, blank=True) 
    score=models.PositiveSmallIntegerField(default=0) 
    def __str__(self): 
     return self.pseudo+' le ' + self.date 
    def getUrl(self): 
     return ("https://twitter.com/{}/status/{}".format(self.pseudo,self.tweetID)) 


class PertinentTweet(models.Model): 
    rawTweetID=models.ForeignKey(RawTweet, on_delete=models.CASCADE, primary_key=True, default=0) 

这里我views.py的一部分,其中我使用的查询集:

 potentialTweets=RawTweet.objects.filter(score__gte=7) 
     for item in potentialTweets: 
      goodTweet = PertinentTweet() 
      goodTweet.rawTweetID = item.tweetID 
      goodTweet.save() 

当我的午餐我的应用我有此错误:

ValueError at/ 无法指定“?”:“PertinentTweet.rawTweetID”必须是“RawTweet”实例。

它看起来像queryset对象“potentialTweets”不是一个RawTweet对象的列表......我知道这一定是因为我在PertinentTweet中定义一个外键来引用RawTweet中的推文。我想保留与我的两张桌子的链接。感谢您的帮助。

回答

0

这样可避免的错误:

goodTweet.rawTweetID = item 

虽然,我不知道如果我理解你的问题。

在您的代码中,potentialTweets确实是RawTweet对象的查询集。
item.tweetID只是RawTweet的一个字段。

+0

谢谢你的快速答案!是的potentialTweets包含RawTweet对象,item.tweetID是RawTweet的一个字段。我只想在字段rawTweetID(PertinentTweet的)中保留字段tweetID(的RawTweet),这就是为什么我把goodTweet.rawTweetID = item.tweetID。我试图使用你的建议,如果它有效,我会说你。 Thks – aicha

+0

它不起作用。我认为如果你说goodTweet.rawTweetID = item,这意味着将所有的项目存储在单个字段中。但我想只保留tweetID字段。当我将goodTweet.rawTweetID = item.tweetID改为goodTweet.rawTweetID = item to goodTweet.rawTweetID = item如ypu建议 – aicha

+0

如果你只想保留'item.tweetID',那么你不需要一个ForeignKey来'RawTweet' 。你可以在'PertinentTweet'中使用BigIntegerField。 – JoseKilo