如何让 Django ForeignKey 表现得像 DateField
How to get Django ForeignKey to behave like a DateField
我有一天 class,它的 ID 是一个 DateField。我有一个事件 class,它通过 ForeignKey 链接到那个 DateField。我想使用像 date_hierarchy 这样的 ModelAdmin 功能,但我得到
<class 'myapp.admin.EventAdmin'>: (admin.E128)
The value of 'date_hierarchy' must be a DateField or DateTimeField.
这是我的 models.py 文件:
class Day(models.Model):
date = models.DateField(primary_key=True)
def __str__(self):
return str(self.date)
class Event(models.Model):
date = models.ForeignKey(Day, to_field='date', related_name='events')
bullet = models.TextField()
def __str__(self):
return self.bullet[:20]
并且 admin.py 有:
class EventAdmin(admin.ModelAdmin):
list_display = ('date', 'bullet')
search_fields = ('bullet',)
list_filter = ('date',)
date_hierarchy = 'date'
ordering = ('-date',)
date_hierarchy 不起作用,并且 list_filter 不会按日期细分。
有没有办法将 Event ForeignKey 字段转换为被视为 DateField 的表单?
我查看 here and here 失败,尽管 v1.11 中的一项功能可能让我直接参考相关模型上的字段。
我希望这是一个人为的例子,因为单列表在这里没有多大意义。你可以很容易地拥有这个
class Event(models.Model):
date = models.DateField(primary_key=True)
bullet = models.TextField()
假设您遗漏了一些相关字段并且 Day 模型很重要,事件应该是:
class Event(models.Model):
date = models.ForeignKey(Day, related_name='events')
bullet = models.TextField()
to_field
在这里不是很有用。然后
class EventAdmin(admin.ModelAdmin):
list_display = ('date__date', 'bullet')
search_fields = ('bullet',)
list_filter = ('date__date',)
date_hierarchy = 'date__date'
ordering = ('-date__date',)
我有一天 class,它的 ID 是一个 DateField。我有一个事件 class,它通过 ForeignKey 链接到那个 DateField。我想使用像 date_hierarchy 这样的 ModelAdmin 功能,但我得到
<class 'myapp.admin.EventAdmin'>: (admin.E128)
The value of 'date_hierarchy' must be a DateField or DateTimeField.
这是我的 models.py 文件:
class Day(models.Model):
date = models.DateField(primary_key=True)
def __str__(self):
return str(self.date)
class Event(models.Model):
date = models.ForeignKey(Day, to_field='date', related_name='events')
bullet = models.TextField()
def __str__(self):
return self.bullet[:20]
并且 admin.py 有:
class EventAdmin(admin.ModelAdmin):
list_display = ('date', 'bullet')
search_fields = ('bullet',)
list_filter = ('date',)
date_hierarchy = 'date'
ordering = ('-date',)
date_hierarchy 不起作用,并且 list_filter 不会按日期细分。
有没有办法将 Event ForeignKey 字段转换为被视为 DateField 的表单?
我查看 here and here 失败,尽管 v1.11 中的一项功能可能让我直接参考相关模型上的字段。
我希望这是一个人为的例子,因为单列表在这里没有多大意义。你可以很容易地拥有这个
class Event(models.Model):
date = models.DateField(primary_key=True)
bullet = models.TextField()
假设您遗漏了一些相关字段并且 Day 模型很重要,事件应该是:
class Event(models.Model):
date = models.ForeignKey(Day, related_name='events')
bullet = models.TextField()
to_field
在这里不是很有用。然后
class EventAdmin(admin.ModelAdmin):
list_display = ('date__date', 'bullet')
search_fields = ('bullet',)
list_filter = ('date__date',)
date_hierarchy = 'date__date'
ordering = ('-date__date',)