具有editable = False的Django模型并在Admin中过滤该字段

时间:2015-01-29 00:05:17

标签: python django django-models django-admin

我有这个型号:

class Values(models.Model):
    ip_given = models.CharField(max_length=250, null=True, blank=True)
    ip_discovered = models.CharField(max_length=250, null=True, blank=True, editable=False)
    time = models.DateTimeField()
    poi = models.ForeignKey(POI, editable=False)
    sensor = models.ForeignKey(Sensor, editable=False)
    value = models.FloatField()

    created_at = models.DateTimeField(auto_now_add=True)

字段poi和sensor是editable = False,因为我在创建对象时自动设置它们。另一方面,我有这个模型管理员:

class ValuesAdmin(admin.ModelAdmin):
    list_display = ('id', 'ip_given', 'ip_discovered', 'value', 'time', 'poi', 'sensor')
    list_display_links = ('id',)
    list_filter = ('poi', 'sensor', 'time', 'value')

问题是我可以按时间和值进行过滤,但是过滤器部分中没有显示poi和传感器。我认为这是因为editable = False属性。

有没有办法按字段过滤而不删除editable = False属性?

1 个答案:

答案 0 :(得分:0)

尝试类似

的内容
list_filter = ('poi__id','sensor__id','time','value') 

您可以使用本手册页中讨论的关系过滤器来跨越关系。

http://docs.djangoproject.com/en/1.7/ref/contrib/admin