2014-06-30 117 views
1

已經找到相關答案,但找不到涵蓋我的具體需求的任何內容。我只使用Django約2周。已經嘗試過教程和Django文檔。在Django管理輸入表格中過濾輸入

背景。我有一個擁有不同資金的數據庫。每個基金可以有不同的表現 期間。在每個表演期間可以有不同的系列。每個績效週期可以有 其中的所有系列都有流量。 已經建立了關係數據庫,以便它像這樣過濾掉。問題在於 系列名稱會在各個性能期間被重複使用(有一個獨立的唯一鍵)。

我的模型文件,看起來是這樣的:

class SeriesFlow(models.Model): 
    series= models.ForeignKey(Series) 
    date = models.DateField('date for flow') 
    value = models.FloatField('Flow pos inflow, neg outflow') 
    def __unicode__(self): 
     return str(self.series) 

class Series(models.Model): 
    perf_period = models.ForeignKey(PerformancePeriod) 
    series = models.CharField(max_length=100) 
    series_longname = models.CharField(max_length=200, blank=True) 
    # more fields 
    def __unicode__(self): 
    return self.series 

在admin.py文件我做的以下相關內容:

class SeriesFlowAdmin(admin.ModelAdmin): 
    fields = ['series', 'date', 'value'] 
    list_display = ['series', 'date', 'value'] 
    list_filter = ['series__perf_period'] #nice __ syntax to go backwards 

# and then registering the admin interfaces 
admin.site.register(Fund, FundAdmin) 
admin.site.register(PerformancePeriod, PerformancePeriodAdmin) 
admin.site.register(Profit, ProfitAdmin) 
admin.site.register(Series, SeriesAdmin) 
admin.site.register(SeriesFlow, SeriesFlowAdmin) 

管理形式允許我來過濾系列流由 是我要做的表現期。當我嘗試添加系列流時,我會得到我想輸入系列,日期,值的三個字段 。問題是,下拉菜單 是否提供了數據庫中所有系列的選項。我想要篩選 下拉菜單,以便系列流量進入頁面,以便它只顯示相關係列。 顯示的系列名稱會在不同的基金和績效期間重複使用 因此下拉菜單很混亂!已過濾的效果時間段位於 的表格中,因此它是無法使用的。只是不知道如何篩選它。

網址爲系列流量過濾和流量入口形式有:

admin/fee/seriesflow/?series__perf_period__id__exact=3 
admin/fee/seriesflow/add/?_changelist_filters=series__perf_period__id__exact%3D3 

我過濾絕對是仍然可用。現在要確保只顯示相關係列。我添加了屏幕截圖,顯示其他演出期間的系列也以下拉菜單顯示。

enter image description here

回答

0

並不真正瞭解你的模型關係,但formfield_for_foreignkey是你需要什麼,我想

class SeriesFlowAdmin(admin.ModelAdmin): 
    def formfield_for_foreignkey(self, db_field, request, **kwargs):     
     if db_field.name == 'series': kwargs['queryset'] = Series.objects.filter(series='xxx')