2013-05-13 17 views
5

Łatwo jest mieć wbudowaną relację bezpośrednią, ale w jaki sposób mogę utworzyć inline dla głębszych relacji?Administrator Django wbudowany w głęboką relację

Powiedzmy sytuacja jest jak

class A(models.Model): 
    ... 

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

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

co teraz chciałbym mieć to w inline admin A który pokaże wszystko to C S z odpowiednimi B nazwę. Jak mogę to zrobić?

+1

Moglibyśmy załatać kilka metod administracyjnych i formularzy, ale to może stać się kłopotliwe. Zalecam tworzenie własnych niestandardowych zestawów formularzy i odpowiednio [prepend] (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls) widoków administracyjnych. –

+0

Lub użyj zależności od pakietu, ponieważ odpowiedź kolumny sugeruje –

Odpowiedz

2

Spójrz na django-nested-inlines. Na przykład:

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 za wysiłek. Byłoby to jednak dobre rozwiązanie, gdyby zagnieżdżone inline zostały oficjalnie obsługiwane. Niestety nie są. – vartec

Powiązane problemy