list_filter启用Django 1.10之后的新list_display

时间:2017-02-13 10:11:48

标签: python django

我一直在玩Django管理页面并陷入困境,似乎无法在文档中找到解决方案。我定义了三种不同的模型:Location,RestaurantFeature和Employee。有三个模型都相互关联。这个问题特定于我的员工模型:

class Employee(models.Model):
    restaurant = models.ForeignKey(RestaurantFeature, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    age = models.IntegerField()
    address = models.CharField(max_length=80)
    prior_experience = models.BooleanField(default=False)
    hour_contract = models.IntegerField()
    hourly_salary = models.FloatField()

    def _get_full_name(self):
        return '%s %s' % (self.first_name, self.last_name)
    full_name = property(_get_full_name)

    def __str__(self):
        return "%s" % self.full_name

    class Meta:
        verbose_name_plural = "Employees"

我拥有的自定义管理布局:

class EmployeeAdmin(admin.ModelAdmin):
    list_display = ('full_name','restaurant','prior_experience',)
    list_filter = ('restaurant',)
    search_fields = ('first_name', 'last_name', )
admin.site.register(Employee, EmployeeAdmin)

这很棒!定义的显示器起作用,过滤器也起作用。我想要的是:启用list_display后的新restaurant filter!这样,可以在需要时提供更详细的信息。

如果应用了list_display,如何定义新的list_filter

更清晰: list_display现在定义全名,餐厅和以前的经验。我希望这些变量在应用餐厅过滤器后更改为全名,餐厅,之前的经验,小时合同和小时工资!因此,例如,所有餐馆的所有员工都会显示一些一般信息,但有一次例如麦当劳'选择后,麦当劳员工将获得更详细的信息。

1 个答案:

答案 0 :(得分:0)

ModelAdmin类定义了一个get_list_display() method,它将请求作为参数。可以想象,您可以检查request.GET以查看它是否包含任何过滤器参数,然后从该方法返回不同的字段列表。