2011-10-03 47 views
4

我已在在admin.pyDjango的:admin.StackedInline沒有外鍵

class AdInline(admin.StackedInline): 
    model = Ad 

class UnitAdmin(admin.ModelAdmin): 
    fields = ('user', 'name', 'about', 'url', 'active', 'type') 
    list_display = ('user', 'name', 'url', 'created', 'active', 'type') 

    inlines = [AdInline] 

class AdAdmin(admin.ModelAdmin): 
    fields = ('user', 'title', 'about', 'url', 'active') 
    list_display = ('user', 'title', 'url', 'created', 'active', 'clicks') 

現在,這是MongoDB中這樣做,我不想關係如下..但我想管理員工作..當我嘗試加載一個單元時,出現以下錯誤:

Exception Value: <class 'ad.models.Ad'> has no ForeignKey to <class 'ad.models.Unit'> 

廣告沒有任何外鍵。我希望所有廣告作爲mongodb中的字典在單位內部生存。我只是想利用django admin's的力量來創建它們。

任何指針?

回答

5

您的內聯必須擁有您要將其納入的模型的外鍵,即您的廣告需要您的單位有外鍵;這是它的工作方式。如果你不能表達這種關係,那麼你就不能使用內聯。我不確定什麼可以在管理員中複製這種行爲,但我不認爲內聯符合該法案。

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin

+8

這是一種恥辱,這是不可能的。我可以很容易地想象出模型A事實上並不具有內聯模型B的外鍵的情況,但是可以通過使用A的字段/方法通過重寫的InlineModelAdmin的get_queryset()來提供Bs的QuerySet。 。 – gregoltsov