搜索字段不工作
Search field is not not working
我正在使用 Django 我的模型和管理部分如下所示
`Model.py'
class Scrip_Master(models.Model):
nse_markt_typ = models.CharField(max_length=35, editable=True)
bse_markt_typ = models.CharField(max_length=35, editable=True)
mcx_sx_markt_typ = models.CharField(max_length=35, editable=True)
nse_symbol = models.CharField(max_length=35, editable=True)
bse_symbol = models.CharField(max_length=35, editable=True)
mcx_sx_symbol = models.CharField(max_length=35, editable=True)
isin_code = models.CharField(max_length=35, editable=True)
nse_series = models.CharField(max_length=35, editable=True)
bse_series = models.CharField(max_length=35, editable=True)
mcx_series = models.CharField(max_length=35, editable=True)
nse_dt_listng = models.DateTimeField(editable=False,null=True)
bse_dt_listng = models.DateTimeField(editable=False,null=True)
face_value = models.DecimalField(max_digits=12, decimal_places=2, default=0.00, editable=True)
def nse_date_listng(self):
if self.nse_dt_listng is not None:
return self.nse_dt_listng.strftime("%d/%m/%Y")
else:
return self.nse_dt_listng
Admin.py
class Scrip_MasterAdmin(admin.ModelAdmin):
list_display = ('nse_markts_typ','nse_symbol','isin_code','nse_series','nse_date_listng','face_value')
search_fields = ['nse_markt_typ','nse_symbol','isin_code','nse_series','nse_date_listng','face_value']
def nse_markts_typ(self,obj):
if MDfile.objects.filter(symbol=obj.nse_symbol).first():
nse_markt_typ = MDfile.objects.filter(symbol=obj.nse_symbol).first()
return nse_markt_typ.mkt_type
else:
return obj.nse_markt_typ
在此 nse_markt_typ 列中没有任何类型的数据,它引用另一个 table 中的另一列并填充结果。但是这里的问题是我的过滤器对这个字段不起作用,因为显示的数据不在数据库中所以如何实现这个字段的过滤器
有人知道解决方案吗??
要在 search_fields
列表中包含像 nse_markt_typ
这样的 属性 并不容易。
是否可以更改您的模型以向 MDfile
添加外键?然后你可以使用双下划线 __
来搜索链接对象上的字段。
class Scrip_Master(models.Model):
nse_markt_typ = models.ForeignKey(MDfile, blank=True, null=True)
class Scrip_MasterAdmin(admin.ModelAdmin):
...
search_fields = ['nse_markt_typ__mkt_type', ...]
请注意,您不能在 list_display
中使用 nse_markt_typ__mkt_type
,因此您可能必须创建一个 属性,或使用 nse_markt_typ
并设置一个合适的 __unicode__
为您的 MDfile
型号。
我正在使用 Django 我的模型和管理部分如下所示
`Model.py'
class Scrip_Master(models.Model):
nse_markt_typ = models.CharField(max_length=35, editable=True)
bse_markt_typ = models.CharField(max_length=35, editable=True)
mcx_sx_markt_typ = models.CharField(max_length=35, editable=True)
nse_symbol = models.CharField(max_length=35, editable=True)
bse_symbol = models.CharField(max_length=35, editable=True)
mcx_sx_symbol = models.CharField(max_length=35, editable=True)
isin_code = models.CharField(max_length=35, editable=True)
nse_series = models.CharField(max_length=35, editable=True)
bse_series = models.CharField(max_length=35, editable=True)
mcx_series = models.CharField(max_length=35, editable=True)
nse_dt_listng = models.DateTimeField(editable=False,null=True)
bse_dt_listng = models.DateTimeField(editable=False,null=True)
face_value = models.DecimalField(max_digits=12, decimal_places=2, default=0.00, editable=True)
def nse_date_listng(self):
if self.nse_dt_listng is not None:
return self.nse_dt_listng.strftime("%d/%m/%Y")
else:
return self.nse_dt_listng
Admin.py
class Scrip_MasterAdmin(admin.ModelAdmin):
list_display = ('nse_markts_typ','nse_symbol','isin_code','nse_series','nse_date_listng','face_value')
search_fields = ['nse_markt_typ','nse_symbol','isin_code','nse_series','nse_date_listng','face_value']
def nse_markts_typ(self,obj):
if MDfile.objects.filter(symbol=obj.nse_symbol).first():
nse_markt_typ = MDfile.objects.filter(symbol=obj.nse_symbol).first()
return nse_markt_typ.mkt_type
else:
return obj.nse_markt_typ
在此 nse_markt_typ 列中没有任何类型的数据,它引用另一个 table 中的另一列并填充结果。但是这里的问题是我的过滤器对这个字段不起作用,因为显示的数据不在数据库中所以如何实现这个字段的过滤器 有人知道解决方案吗??
要在 search_fields
列表中包含像 nse_markt_typ
这样的 属性 并不容易。
是否可以更改您的模型以向 MDfile
添加外键?然后你可以使用双下划线 __
来搜索链接对象上的字段。
class Scrip_Master(models.Model):
nse_markt_typ = models.ForeignKey(MDfile, blank=True, null=True)
class Scrip_MasterAdmin(admin.ModelAdmin):
...
search_fields = ['nse_markt_typ__mkt_type', ...]
请注意,您不能在 list_display
中使用 nse_markt_typ__mkt_type
,因此您可能必须创建一个 属性,或使用 nse_markt_typ
并设置一个合适的 __unicode__
为您的 MDfile
型号。