0
    class Pinyin(models.Model):
    pinyinWord = models.CharField(max_length=200)
    englishWord = models.CharField(max_length=1000)
    englishPhrase = models.TextField()
    pinyinPhrase = models.TextField()
    def __unicode__(self):
        return u"%s | %s" % (self.pinyinWord, self.englishWord)

class Learned(models.Model):
    def __unicode__(self):
        return u"%s | %s | %s | %s" % (self.pinyinWord, self.user, self.date, self.learned) 
    pinyinWord = models.ForeignKey(Pinyin)
    user = models.ForeignKey(User)
    date = models.DateField()
    learned = models.BooleanField()

私はdjangoとプログラミングに不慣れで、Model PinyinからModel Learnedに値を追加したいのですが、その特定のユーザーのlearnedにまだ追加されていないが、これを行う方法を正確に把握できないようです。

たとえば、Pinyin から値を取得したいのですが、Pinyin.id と User.id がまだ Learned にない場合は、ユーザー ID、今日の日付、および Learned が False/0 に設定された単語を Learned モデルに追加します。

4

2 に答える 2

1

モデルメタオプションを使用できますunique_together

class Learned(models.Model):
    pinyinWord = models.ForeignKey(Pinyin)
    user = models.ForeignKey(User)
    date = models.DateField()
    learned = models.BooleanField()
    class Meta:
        unique_together = ('user', 'pinyinWord')
于 2011-04-17T16:26:46.807 に答える
0

これがあなたが探しているものであることを願っています:

uid = User.objects.get(username='Greg').id
pinyin = Pinyin.objects.get(pinyinWord='kuai')

learned, created = Learned.objects.get_or_create(pinyinWord=pinyin.pinyinWord, 
                                                                 user__id=uid)
if created:   # newly INSERTed Learned  instance
     learned.date = datetime.date.today()
     learned.learned = False
     learned.save()

Model.objects.get_or_createメソッドは、最初に提供された引数を使用してModel.objects.get呼び出しを試みます。失敗した場合、オブジェクトは作成され、createdは True になります。それ以外の場合、createdは False になります。

これは両方のフィールドの正確なルックアップ (たとえば pinyinWord__contains ではない) であるため、両方のフィールドを満たす Learned インスタンスがない場合は失敗します。その後、作成されます。

その後、日付などを設定してインスタンスを保存できます。

于 2011-04-17T16:43:47.580 に答える