我一直在玩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现在定义全名,餐厅和以前的经验。我希望这些变量在应用餐厅过滤器后更改为全名,餐厅,之前的经验,小时合同和小时工资!因此,例如,所有餐馆的所有员工都会显示一些一般信息,但有一次例如麦当劳'选择后,麦当劳员工将获得更详细的信息。
答案 0 :(得分:0)
ModelAdmin类定义了一个get_list_display()
method,它将请求作为参数。可以想象,您可以检查request.GET
以查看它是否包含任何过滤器参数,然后从该方法返回不同的字段列表。