2013-05-13 21 views
5

È abbastanza facile avere una linea diretta per una relazione diretta, ma come posso creare una linea per relazioni più profonde?Django admin in linea per deep relation

Diciamo che la situazione è come

class A(models.Model): 
    ... 

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

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

Ora quello che mi piacerebbe avere è inline in amministrazione per A che mostrerà tutto è C s con corrispondenti B nome. Come lo faccio?

+1

È possibile applicare patch ad alcuni metodi di amministrazione e modulo, ma questo tenderà a diventare disordinato. Ti consiglio di creare il tuo formset personalizzato e [anteporre] (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls) le visualizzazioni di amministrazione di conseguenza. –

+0

Oppure utilizzare una dipendenza del pacchetto come risposta dello stalk suggerisce –

risposta

2

Dai uno sguardo allo django-nested-inlines. Dall'esempio:

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 per lo sforzo. Tuttavia, sarebbe una buona soluzione se le linee nidificate fossero ufficialmente supportate. Sfortunatamente non lo sono. – vartec