私はジャンゴモデルを持っています:
class ActivationCode(models.Model):
id = models.FloatField(primary_key=True)
user = models.ForeignKey('User', to_field='id', on_delete=models.CASCADE)
ActivationCode インスタンスを選択するのに苦労したので、独自の ID を使用してインスタンスを取得しようとしました。
activation_codes = ActivationCode.objects.all()
print len(tuple(activation_codes))
>>> 1
for code in activation_codes:
cid = code.id
ActivationCode.objects.get(id=cid)
>>> DoesNotExist: ActivationCode matching query does not exist.
どうしたの?独自の ID を使用しているのに、オブジェクトが存在しないと表示されるのはなぜですか? .get() ではなく .all() を使用してインスタンスを取得できるのはなぜですか?
上記のコードは、テスト環境 (TestCase) のクラスベース ビューで実行されていることに注意してください。ターミナルで同じことを試してみると、うまくいきます。