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つのテーブルとのリンクを維持したいと思います。ご協力ありがとうございました。
ありがとうございました!はいpotentialTweetsにはRawTweetオブジェクトが含まれ、item.tweetIDはRawTweetのフィールドです。私はフィールドrawTweetID(PertinentTweetの)にフィールドtweetID(RawTweetの)を保持したいのですが、それはgoodTweet.rawTweetID = item.tweetIDを置く理由です。私はあなたのアドバイスを使用しようとしていると、それが動作する場合はあなたに言うでしょう。 Thks – aicha
これは動作しません。私はあなたがgoodTweet.rawTweetID = itemと言うと、アイテムのすべてのフィールドを1つのフィールドに格納することを意味します。しかし、私はtweetIDフィールドだけを残したいと思います。私がgoodTweet.rawTweetID = item.tweetIDをgoodTweet.rawTweetID = itemに変更すると、goodTweet.rawTweetID = ypuのような項目が表示される – aicha
'item.tweetID'だけを保持したい場合、' RawTweet'にはForeignKeyは必要ありません。あなたは 'PertinentTweet'でBigIntegerFieldを使うことができます。 – JoseKilo