4

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

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',它不指代一个字段。”

我可以避免它,还是添加将自动计算的模型字段?

4

4 回答 4

2

admin 不是从 django.db.models.fields 子类化的字段。

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

于 2013-08-22T03:18:05.907 回答
2

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

于 2013-08-22T05:49:44.760 回答
0

听起来你很困惑list_display,而且list_filter. 您的代码用于在 中添加新列,list_display但您的标题和错误消息参考list_filter.

于 2013-08-22T05:32:48.653 回答
0

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

于 2013-08-22T07:05:39.403 回答