我正在使用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列中没有任何类型的数据,它引用了另一个表中的另一列并填充了结果。但是这里的问题是我的过滤器不适用于该字段,因为显示的数据不在数据库中,所以任何人都知道如何解决这个问题?
nse_markt_typ
在search_fields
列表中包含类似属性的方法并不容易。
可以更改模型以向其中添加外键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', ...]
请注意,您不能nse_markt_typ__mkt_type
在中使用list_display
,因此您可能必须创建一个属性,或者使用nse_markt_typ
并设置适合__unicode__
您的MDfile
模型的属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句