2016-04-30 7 views
0

RawTweetとPertinentTweetの2つのテーブルがあります.PertinentTweetにRawtweetのtweetIDを参照する外部キーがあります。 RawTweetでつぶやきを選び、PertinentTweetに保存したいのですが。私はそれを行うためにクエリーセットを使用しています。クエリセットの結果を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() 

をI昼食私のアプリケーションは、私はこのエラーを持っている場合:

ValueError at/ "?"を割り当てることはできません: "PertinentTweet.rawTweetID"は "RawTweet"インスタンスである必要があります。

クエリセットオブジェクトのように見える "potentialTweets"はRawTweetオブジェクトのリストではありません...私はRawTweetのツイートを参照するためにPertinentTweetの外部キーを定義する必要があります。そして、私は2つのテーブルとのリンクを維持したいと思います。ご協力ありがとうございました。

答えて

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と言うと、アイテムのすべてのフィールドを1つのフィールドに格納することを意味します。しかし、私はtweetIDフィールドだけを残したいと思います。私がgoodTweet.rawTweetID = item.tweetIDをgoodTweet.rawTweetID = itemに変更すると、goodTweet.rawTweetID = ypuのような項目が表示される – aicha

+0

'item.tweetID'だけを保持したい場合、' RawTweet'にはForeignKeyは必要ありません。あなたは 'PertinentTweet'でBigIntegerFieldを使うことができます。 – JoseKilo

関連する問題