如何在django admin中对我自己的字段进行过滤?

时间:2013-08-22 01:52:03

标签: python django django-models django-admin

我添加了一个布尔字段,计算时间如下:

def is_active(self):
    if self.inactive_to and self.available_until:
        if datetime.date.today()>=self.inactive_to and datetime.date.today()<=self.available_until:
            return True
        else:
            return False
    elif self.inactive_to:
        if datetime.date.today()>=self.inactive_to:
            return True
        else:
            return False
    elif self.available_until:
        if datetime.date.today()<=self.available_until:
            return True
        else:
            return False
    else:
        return True
is_active.short_description = 'Available'
is_active.boolean = True

但如果我尝试将其添加到“list_filter”,我会收到错误“'RealtyAdmin.list_filter [0]'指的是'is_active',它不引用字段。”

我可以避免它,或者添加将自动计算的模型fild吗?

4 个答案:

答案 0 :(得分:2)

admin不是从django.db.models.fields继承的字段。

这就是'is_active' which does not refer to a Field."所说的......

答案 1 :(得分:2)

我不够专心,这里https://docs.djangoproject.com/en/1.5/ref/contrib/admin/描述了如何添加自己的过滤器(从1.4开始)

答案 2 :(得分:0)

听起来好像让您感到困惑list_displaylist_filter。您的代码用于在list_display中添加新列,但您的标题和错误消息引用list_filter

答案 3 :(得分:0)

Django ORM找不到名为is_active的数据库字段,因为它是一个python函数。 Django管理员不能通过python函数返回结果进行排序或过滤。 但是,正如您所说,您可以在模型中添加包含所需值的字段,然后将其添加到list_filter