2015-01-16 3 views
1

작동하지되지는검색 필드 내 모델과 관리 부분을 장고 사용하고

`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 목록에 포함시키는 쉬운 방법은 없습니다.

MDfile에 외래 키를 추가하도록 모델을 변경할 수 있습니까? 그런 다음 두 개의 밑줄 __을 사용하여 링크 된 개체의 필드를 검색 할 수 있습니다. 당신이 당신의 MDfile 모델에 적합한 __unicode__을 당신이 재산을해야 할 수도 있으므로, list_display에서 nse_markt_typ__mkt_type를 사용하거나 nse_markt_typ를 사용하여 설정할 수 없습니다

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

참고.

+0

관리자와 모델에서이 외부 구현을 수행하는 방법을 보여주십시오. – Krish

+0

업데이트 된 답변보기 – Alasdair

+0

파일에서 master를 scrip으로 가져 오기 때문에 scrip master에서 nse_markt_typ을 외래 키로 할당 할 수 없습니다. – Krish