2015-01-16 28 views
1

我使用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欄中給出沒有任何種類的數據,它引用另一個表中的另一列並填充結果。但在這裏問題我的過濾器將無法正常工作,因爲顯示的數據不在數據庫中,所以如何才能實現過濾器爲這個字段 做任何人都知道一個解決方案?

回答

2

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', ...] 

請注意,你不能爲你的MDfile模型list_display使用nse_markt_typ__mkt_type,所以你可能需要創建一個屬性,或使用nse_markt_typ並設置合適的__unicode__

+0

你可以請示範我如何在管理和模型中執行這個外部實現 – Krish

+0

查看最新的答案。 – Alasdair

+0

我不能將nse_markt_typ分配到腳本主文件中作爲外鍵,因爲我將值從文件導入到腳本主文件中 – Krish