モデルクラスのDateFieldを別のモデルクラスのForeignKeyとして使用しようとしていて、両方のクラスでdefaultをtodayに設定しようとすると問題が発生します。エラーメッセージは次のとおりです。Django Models:DateFieldをForeignKeyとして使用するときのエラー
django.core.exceptions.ValidationError: ["'self.date' value has an invalid date format. It must be in YYYY-MM-DD format."]
コード:
class DailyImage(models.Model):
date = models.DateField(auto_now_add=True, unique=True)
name = models.CharField(max_length = 1000)
image = models.CharField(max_length = 1000)
location = models.CharField(max_length = 1000)
def __str__(self):
return str(self.id) + ": " + self.name + ", " + self.location
class JournalEntry(models.Model):
date = models.DateField(auto_now_add=True)
journal = models.CharField(max_length = 5000)
image = models.ForeignKey(DailyImage, to_field='date', default='self.date')
サイトの毎日の日記です。毎日、unsplash.itの画像をDailyImageクラスに追加します。DailyImageクラスは、ホームページのヘッダーとして表示され、その日に作成された仕訳入力のページのヘッダーとして表示されます。ジャーナルエントリが作成されると、その日に作成されたイメージを自動的に参照する必要があります。
シェルでそれをテストし、日付フィールドが一致するように見えるが、としてフォーマットされていますdatetime.date(YYYY、MM、DD)
>>> a = JournalEntry.objects.get(pk=1)
>>> a
<JournalEntry: test>
>>> a.date
datetime.date(2016, 11, 7)
>>> from journal.models import DailyImage as image
>>> b = image.objects.get(pk=1)
>>> b.date
datetime.date(2016, 11, 7)
>>> b.date == a.date
True
これが適切に行われるべきかに任意の提案を大幅になります感謝!
すばやくお返事ありがとうございます。これらのどれも私のために働くようには思われなかった。代わりに、私は新しい変数today = datetime.today.strftime( "%Y-%m-%d")を作成し、それを画像フィールドに割り当てました: > image = models.ForeignKey(DailyImage、to_field = 'date' 、default = 'today') まだ正常に動作しているかどうかはまだテストされていませんが、これまでのところOKです。 – user2339709
'to_field = 'date''(デフォルト) 'id'によって自動的にリンクされます。あなたがやっていることは非常に珍しいことです。また、ジャーナルを通して既に利用可能なので、「イメージの日付」を省略することもできます。 – FeedTheWeb
そして、その間に、Foreignkey(1対多)の代わりにOneToOneFieldを使用してみてください。 – FeedTheWeb