【问题标题】:Search field is not not working搜索字段不起作用
【发布时间】:2015-03-15 01:00:32
【问题描述】:

我正在使用 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 列中没有任何类型的数据,它引用另一个表中的另一个列并填充结果。但是这里的问题是我的过滤器不适用于该字段,因为显示的数据不在数据库中,所以如何实现对该字段的过滤 有谁知道解决办法吗??

【问题讨论】:

    标签: django python-2.7 search model admin


    【解决方案1】:

    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__ 模型设置一个合适的__unicode__

    【讨论】:

    • 你能告诉我一个例子如何在管理和模型中做这个外国实现
    • 我无法将 scrip master 中的 nse_markt_typ 指定为外键,因为我正在从文件中将值导入到 scrip master
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2014-07-05
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多