2014-10-29 59 views
0

我想在documentation之後的外鍵字段中篩選我的管理員選項。Django formfield_for_foreignkey

我的模型很簡單:

class Page(models.Model): 
    title = models.CharField(max_length=50, null=False, blank=False, default="Title") 
    layout = models.ForeignKey(Layout, null=False) #This sets the layout for the current page 

爲了實現這個目標,我應該這樣做:

class PageAdmin(admin.ModelAdmin): 

    def formfield_for_foreignkey(self, db_field, request, **kwargs): 
     if db_field.name == "layout": 
      kwargs["queryset"] = Template.objects.get_a_queryset() 
     return super(PageAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 

這是工作,但它是通過函數我每次訪問時間爲3次會該頁面共提供5個查詢(3次加2,默認情況下)。它傳遞3次相同的db_field。

我怎樣才能減少到只有1個查詢?這是一種預期的行爲,如果是這樣......爲什麼?

回答

0

我不太清楚是怎麼回事,但我有兩個工具指向自己的方式:

  1. IPython嵌入

    from IPython import embed 
    ... lots of code ... 
    embed() 
    

,你運行你的開發外殼服務器將進入您嵌入的IPython(),以便您可以探索堆棧

  1. traceback模塊

    import traceback 
    ... lots of code .... 
    traceback.print_stack() 
    

這將打印出棧,以便您可以區分3所調用。

+0

我試過比較調用之間的差異,但一切似乎是完全一樣的(比較每個參數) – cdvv7788 2014-10-30 18:32:47

+1

我可以在週末看看這個,並報告回來。 – 2014-10-30 21:34:27

相關問題