【发布时间】:2020-05-21 07:06:34
【问题描述】:
我正在使用 django tables2 和 django_filters 来过滤表中的值字段。
我的模型:
class Woo_Orders(models.Model):
oid = models.IntegerField("oid",null=True)
site=models.ForeignKey(Site, null=True,blank=True,verbose_name="Site", on_delete = models.CASCADE)
class Site(models.Model):
ref_prefix = models.CharField(max_length=20, blank=True, null=True,verbose_name="REF")
Site 是 Woo_Orders 模型的 fk。
我的桌子:
class WooOrderTable(tables.Table):
ref_prefix = tables.Column(accessor='site.ref_prefix',verbose_name= 'Ref Prefix')
class Meta:
model = Woo_Orders
template_name = 'django_tables2/bootstrap4.html'
exclude = (...,...)
sequence = ('ref_prefix',...,...)
def render_ref_prefix(self,record):
#site prefix + oid
concatenated_prefix = record.site.ref_prefix + str(record.oid)
return '%s' % (concatenated_prefix)
返回值是来自Woo_Orders 模型的oid 值加上Site 模型的ref_prefix 值的串联值。
我的问题是,当我过滤ref_prefix 字段时,我不知道如何返回连接值。
我的过滤器:
class WooOrderFilter(django_filters.FilterSet):
site__ref_prefix = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = Woo_Orders
fields = ['site__ref_prefix']
过滤器仅“捕获”Site 模型的 ref_prefix 部分,而不是我想要的所有连接值。
如何修复过滤器部分以根据连接值进行搜索?
【问题讨论】:
-
我终于找到了解决办法。
标签: django django-tables2 django-filters