在尝试使用一个模型类的DateField作为另一个模型类的ForeignKey时出现问题,并且在两个类上都使用默认设置为今天。错误信息是:
代码:django.core.exceptions。ValidationError:("自我。"日期"值的日期格式无效。格式必须为YYYY-MM-DD。"]
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的图像。将其传递给DailyImage类,然后在主页上显示为标题,在当天创建的日志条目的页面上显示为标题。当创建日记账分录时,它应该自动引用当天创建的映像。
在shell中测试,日期字段似乎匹配,但格式为:datetime。日期(年、月、日)
>>> 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
任何建议,这应该如何正确地做将非常感激!
a。Date返回datetime对象,但必须设置格式。
t = datetime.date(2016, 11, 7)
t.strftime("%Y-%m-%d")
# '2016-11-07'
你也可以在settings.py
中设置默认的日期时间格式DATETIME_FORMAT = 'Y-m-d'
但我不确定这是否能解决你的情况。