在尝试将模型类的DateField用作另一个模型类的ForeignKey时,遇到问题,并在两个类上使用默认设置为today。错误消息是:
django.core.exceptions.ValidationError:[“'self.date'值的日期格式无效。必须采用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.it添加到DailyImage类,然后在主页上显示为标题,并在当天创建的日记条目页面上显示标题。创建日记帐分录时,应自动引用当天创建的图像。
在shell中测试它,日期字段似乎匹配,但格式为: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
非常感谢任何有关如何正确完成此事的建议!
答案 0 :(得分:1)
a.date返回datetime对象,但您必须设置格式。
t = datetime.date(2016, 11, 7)
t.strftime("%Y-%m-%d")
# '2016-11-07'
您还可以在settings.py
中设置默认日期时间格式DATETIME_FORMAT = 'Y-m-d'
但是我不确定这会是你情况的解决方案。