2010-10-01 68 views
1

所以我試圖設置一個條目發佈系統,用戶在創建條目時可以選擇一堆相關條目。如果我能爲它使用InlineModelAdmin,那將是美好的。但它一直想要一個外國的密鑰,由於某種原因,我無法正確設置。Django:InlineModelAdmin引用它自己的模型

這裏是我的情況的簡化設置:

models.py

class Entry(models.Model): 
    entry   = models.ForeignKey('self', related_name='related_entry', null=True, blank=True) 
    title   = models.CharField(max_length=100, verbose_name='title') 
    description  = models.TextField(verbose_name='description') 

    def __unicode__(self): 
     return self.title 

admin.py

class EntryInline(admin.TabularInline): 
    model = Entry 
    verbose_name = "related entry" 

class EntryAdmin(admin.ModelAdmin): 
    inlines = [ 
     EntryInline, 
    ]  

admin.site.register(Entry, EntryAdmin) 

的問題即時得到有喜歡的:

Database /錯誤在/ admin/app/entry/add/ 列app_entry.entry_id不存在 LINE 1:選擇 「app_entry」, 「ID」, 「app_entry」 「entry_id」,」 ...

我還只是kneedeep進入魔幻世界Django的,所以如果有人能指出我哪裏錯了,將不勝感激!

回答

3

首先,我嘗試了你在我的機器上提供的代碼(Django 1.2.3,Python 2.6.2,Ubuntu Jaunty),並且據我所知,它工作得很好。

用戶在創建條目時可以選擇一堆相關條目。

你不是應該使用ManyToMany關係,如果你想表項的相關一堆條目?您的代碼目前定義了一個ForeignKey

admin.py

...

admin.site.register(入口,EntryAdmin)

您的管理員目前設置讓用戶添加一個條目和(可選)同一頁面中的一個或多個相關條目(此功能完美)。這是你的期望嗎?

+0

是的,這就是我想要的!那麼我想應該嘗試調試我的更復雜的設置,如果它對你很好,嗯。 – Kasper 2010-10-01 12:27:43

+0

好吧,它的工作原理,但它似乎是我必須去多到很多:),無論如何,謝謝! – Kasper 2010-10-01 12:37:29