搜索字段不工作

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 型号。