2012-09-09 42 views
3

我正在尋找一些關於如何讓我的Django項目管理員使用這兩個工具,treeadmin拖放thingy和mptt模型的幫助。Django - 什麼是fk_name?

一切工作正常開箱的,但是當我嘗試這在我的admin.py:

class ItemInline(TreeAdmin): 
    model = MenuItems 

class MenuAdmin(admin.ModelAdmin): 
    model = Menu 
    inlines = (ItemInline,) 

admin.site.register(Menu, MenuAdmin) 

我得到了一個錯誤:對象類型「ItemInline」有沒有屬性「FK_NAME」。

現在,這個fk_name到底是什麼,我該如何將它添加到ItemInLine中?

這裏是我的模型爲好,如果它有什麼做什麼:

class Menu(MPTTModel): 
     name = models.CharField(max_length = 100) 

     def __unicode__(self): 
       return self.name 

class MenuItems(MPTTModel): 
     menu = models.ForeignKey(Menu) 
     name = models.CharField(max_length=50, unique=True) 
     parent = TreeForeignKey('self', null=True, blank=True, related_name='children') 
     target = models.ForeignKey(Pages,null=True, blank=True) 

     class MPTTMeta: 
       order_insertion_by = ['name'] 

     def __unicode__(self): 
       return self.name 
+0

'fk_name'在文檔解釋說:https://docs.djangoproject.com/en/dev /ref/contrib/admin/#django.contrib.admin.InlineModelAdmin.fk_name所以也許設置'fk_name'菜單的幫助。然後再次:你使用哪個mptt軟件包? – arie

+0

將菜單添加爲fk_name後,我得到一個新的錯誤:type object'ItemInline'沒有'extra'屬性。而關於mptt包..不知道這意味着什麼。在頁面的頂部,我有這個:從mptt.admin import * ... – QlliOlli

回答

4

你不能做任何的隨機管理類爲內聯。它必須實際上繼承InlineModelAdmin類,無論如何TreeAdmin顯然不是。

你可以嘗試使用InlineModelAdmin作爲一個混合固定這一點 - 威力工作:

class ItemInline(TreeAdmin, InlineModelAdmin): 
+1

好吧,嘗試這一個,並得到「__init __()只需要3個參數(1給出)」...我太笨了,得不到這個對。我不知道什麼是__init __(),這3個參數是什麼,爲什麼這個類很難與菜單類一起工作......我想我只需要單獨設置菜單項和另一個用於管理部分中的不同菜單。只要創建一個菜單並在該菜單中設置菜單項就會很酷。現在,我必須單獨編輯菜單項並在其中選擇此項目所屬的菜單... – QlliOlli