具有 editable=False 的 Django 模型并在 Admin 中过滤该字段
Django model with editable=False and filter that field in 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,因为我在创建对象时自动设置了它们。另一方面,我有这个 modelAdmin:
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 属性的情况下按该字段进行过滤?
试试
list_filter = ('poi__id','sensor__id','time','value')
您可以使用本手册页中讨论的关系过滤器来跨越关系。
我有这个型号:
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,因为我在创建对象时自动设置了它们。另一方面,我有这个 modelAdmin:
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 属性的情况下按该字段进行过滤?
试试
list_filter = ('poi__id','sensor__id','time','value')
您可以使用本手册页中讨论的关系过滤器来跨越关系。