2013-05-13 109 views
5

直接關係內聯很容易,但是如何創建內聯以建立更深層次的關係?Django管理員內嵌深層關係

假設情況是這樣

class A(models.Model): 
    ... 

class B(models.Model): 
    a = models.ForeignKey(A) 

class C(models.Model): 
    b = models.ForeignKey(B) 

現在我想已經是行內的管理爲A,這將顯示它的所有C s的相應B名。我怎麼做?

+1

您可以修補一些管理員和表單方法,但這樣會變得混亂。我建議創建自己的自定義formset和[prepend](https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls)相應的管理視圖。 – 2013-05-13 13:07:15

+0

或者使用程序包依賴關係,因爲stalk的答案建議 – 2013-05-13 13:14:01

回答

2

看看django-nested-inlines。例如:

from django.contrib import admin 
from nested_inlines.admin import NestedModelAdmin, NestedStackedInline, NestedTabularInline 
from models import A, B, C 

class MyNestedInline(NestedTabularInline): 
    model = C 

class MyInline(NestedStackedInline): 
    model = B 
    inlines = [MyNestedInline,] 

class MyAdmin(NestedModelAdmin): 
    pass 

admin.site.register(A, MyAdmin) 
+1

+1。但是,如果嵌套內聯得到正式支持,那將是一個很好的解決方案。不幸的是,他們不是。 – vartec 2013-05-13 13:25:20