2015-01-16 3 views
1

Я использую Джанго моей модели и админ части приводятся нижеполя поиска не не работают

`

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 Model.py» не имеют каких-либо данных, и он ссылается на другой столбец в другой таблице и заполняет результат. Но здесь проблема моих фильтров не будет работать для этого поля, потому что отображаемых данных нет в базе данных, так как можно добиться фильтра для этого поля Кто-нибудь знает решения?

ответ

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

Обратите внимание, что вы не можете использовать nse_markt_typ__mkt_type в list_display, так что вы, возможно, придется создать свойство, или использовать nse_markt_typ и установить подходящую __unicode__ для MDfile модели.

+0

Можете ли вы, пожалуйста, показать мне пример того, как сделать эту чужую реализацию в администраторах и моделях – Krish

+0

См. Обновленный ответ. – Alasdair

+0

Я не могу назначить nse_markt_typ в master-скрипте как внешний ключ, потому что я импортирую значение, чтобы скомпилировать мастер из файла – Krish

Смежные вопросы