Django Admin:如何按其他模型中的数据排序?

布鲁图斯

Django应用中,我有以下两个模型EventEventDate我想Event的管理列表视图中显示一些来自EventDate的计算数据我希望能够对其进行排序。

我根据EventDate中的数据计算每个事件下一个即将到来的日期现在,我希望它不仅显示在EventDjango Admin列表视图中,而且还希望按其排序事件。

Django模型如下所示:

class EventDate(models.Model):

  date = models.DateField(db_index=True)
  start = models.TimeField(blank=True, null=True)
  end = models.TimeField(blank=True, null=True)
  event = models.ForeignKey('Event')

class Event(TimeStampedModel):

  title = models.CharField(max_length=200)
  text = models.TextField()
  published = models.BooleanField(default=False, db_index=True)

到目前为止我尝试过的

首先,我为Event模型提供了一个返回下一个日期属性属性可以正常工作:我可以在中显示下一个日期list_display,甚至可以使用优化prefetch_related但是我无法在列表显示中的该字段上进行排序:(

接下来,我尝试使用添加到模型中extra,以解决此限制。

class EventAdmin(admin.ModelAdmin):

  def get_queryset(self, request):
    qs = super(EventAdmin, self).get_queryset(request)
    qs.extra(
      select={
        'n2': """SELECT MIN(events_eventdate.date) FROM events_eventdate
          WHERE events_event.id == events_eventdate.event_id AND
          events_eventdate.date >= '{}'
          """.format(now().date().isoformat())
      }
    )
    return qs

它可以在调试外壳程序中工作,但是我无法在管理员中使用它。我不知道如何将其包括在内list_display或做其他事情。

布鲁图斯

似乎我找到了一种使用额外通话中的数据的方法...

我在中添加了一个方法,EventAdminadmin_order_field为该方法设置了额外调用所生成的字段:

class EventAdmin(admin.ModelAdmin):

  def get_queryset(self, request):
    qs = super(EventAdmin, self).get_queryset(request)
    qs = qs.prefetch_related('eventdate_set')
    qs = qs.extra(
      select={
        'next_date': """SELECT MIN(events_eventdate.date)
          FROM events_eventdate
          WHERE events_event.id == events_eventdate.event_id AND
          events_eventdate.date >= '{}'
          """.format(now().date().isoformat())
      }
    )
    return qs

  def next_date(self, obj):
      try:
        return obj.next_date
      except IndexError:
        return 'abgelaufen'

  next_date.short_description = 'Nächster Termin'
  next_date.admin_order_field = 'next_date'

不知道这是干净还是理智...似乎可以正常工作,我会继续这样做,因为在这里很难找到Django Questions的答案。会报告是否对我不利。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何按基于Django中其他模型计算的值排序?

来自分类Dev

Django中的其他非模型数据库连接

来自分类Dev

如何使Django模型独占其他模型

来自分类Dev

如何使用django模型中的其他字段生成主键

来自分类Dev

在django中按相关模型的数量排序?

来自分类Dev

在Django模型中处理其他kwarg

来自分类Dev

如何查找是否从Django Admin或其他地方保存了模型

来自分类Dev

在django-admin中将ArrayField替换为其他模型中的多个字段

来自分类Dev

如何使用模型中的其他字段初始化Django模型中的字段

来自分类Dev

如何基于同一模型中其他字段的值设置Django模型字段值

来自分类Dev

如何使用其他模型在Django模型中创建选择字段

来自分类Dev

如何基于不同模型中其他字段的值设置Django模型字段的值

来自分类Dev

如何根据其他非相关模型过滤django模型

来自分类Dev

模型从Django中的其他模型继承字段

来自分类Dev

Django从其他模型过滤

来自分类Dev

Django从其他模型过滤

来自分类Dev

在Django模型中以印地文和其他语言存储数据

来自分类Dev

如何按 Django 中的字段排序

来自分类Dev

如何在 Django 中为用户和其他模型编写装饰?

来自分类Dev

如何使用其他模型值过滤结果-Django RestFramework

来自分类Dev

如何链接来自其他 Django 模型的用户?

来自分类Dev

Django CeateView 并更改其他模型中的记录

来自分类Dev

Django Admin中的列排序

来自分类Dev

Django Admin中的列排序

来自分类Dev

如何在Django中按模型过滤模型

来自分类Dev

在Django模型上按DateTimeRange字段排序

来自分类Dev

在Django模型上按DateTimeRange字段排序

来自分类Dev

如何在Django Serializer中按用户ID检索所有模型数据?

来自分类Dev

如何从Django中的模型对象获取数据

Related 相关文章

  1. 1

    如何按基于Django中其他模型计算的值排序?

  2. 2

    Django中的其他非模型数据库连接

  3. 3

    如何使Django模型独占其他模型

  4. 4

    如何使用django模型中的其他字段生成主键

  5. 5

    在django中按相关模型的数量排序?

  6. 6

    在Django模型中处理其他kwarg

  7. 7

    如何查找是否从Django Admin或其他地方保存了模型

  8. 8

    在django-admin中将ArrayField替换为其他模型中的多个字段

  9. 9

    如何使用模型中的其他字段初始化Django模型中的字段

  10. 10

    如何基于同一模型中其他字段的值设置Django模型字段值

  11. 11

    如何使用其他模型在Django模型中创建选择字段

  12. 12

    如何基于不同模型中其他字段的值设置Django模型字段的值

  13. 13

    如何根据其他非相关模型过滤django模型

  14. 14

    模型从Django中的其他模型继承字段

  15. 15

    Django从其他模型过滤

  16. 16

    Django从其他模型过滤

  17. 17

    在Django模型中以印地文和其他语言存储数据

  18. 18

    如何按 Django 中的字段排序

  19. 19

    如何在 Django 中为用户和其他模型编写装饰?

  20. 20

    如何使用其他模型值过滤结果-Django RestFramework

  21. 21

    如何链接来自其他 Django 模型的用户?

  22. 22

    Django CeateView 并更改其他模型中的记录

  23. 23

    Django Admin中的列排序

  24. 24

    Django Admin中的列排序

  25. 25

    如何在Django中按模型过滤模型

  26. 26

    在Django模型上按DateTimeRange字段排序

  27. 27

    在Django模型上按DateTimeRange字段排序

  28. 28

    如何在Django Serializer中按用户ID检索所有模型数据?

  29. 29

    如何从Django中的模型对象获取数据

热门标签

归档