2013-05-13 29 views
5

Nó khá dễ dàng để có nội tuyến cho quan hệ trực tiếp, nhưng làm thế nào tôi có thể tạo nội tuyến cho các mối quan hệ sâu sắc hơn?Django admin nội tuyến cho mối quan hệ sâu sắc

Hãy nói rằng tình hình là như

class A(models.Model): 
    ... 

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

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

Bây giờ những gì tôi muốn có là nội tuyến trong quản trị cho A mà sẽ hiển thị tất cả của nó C s tương ứng với B tên. Làm thế nào để làm điều đó?

+1

Bạn có thể vá một số phương thức quản trị và biểu mẫu, nhưng điều đó sẽ có xu hướng lộn xộn. Tôi khuyên bạn nên tạo formset tùy chỉnh của riêng bạn và [prepend] (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls) chế độ xem quản trị cho phù hợp. –

+0

Hoặc sử dụng sự phụ thuộc của gói như câu trả lời của thân cây đề xuất –

Trả lời

2

Hãy xem django-nested-inlines. Từ ví dụ:

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 cho nỗ lực này. Tuy nhiên, đó sẽ là giải pháp tốt nếu lồng vào nhau được hỗ trợ chính thức. Thật không may họ không. – vartec

Các vấn đề liên quan