2011-10-03 6 views
4

와 admin.StackedInline 내가 지금이 그래서 난 관계를 원하지 않는 MongoDB를 이루어집니다 admin.py장고 : 없음 외래 키

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') 

에 다음과 같은 한 ..하지만 관리자가 작업 할 .. 유닛을로드하려고하면 다음 오류가 발생합니다.

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

Ad에는 외래 키가 없습니다. 모든 광고가 mongodb에있는 사전으로 유닛 안에 존재하기를 바랍니다. 난 그냥 장고 관리자의 능력을 활용하여 그들을 만들고 싶어.

모든 포인터?

답변

5

인라인에 포함 할 모델에 외래 키가 있어야합니다. 즉, 광고에 외부 키가 있어야합니다. 그것이 작동하는 방식입니다. 그 관계를 표현할 수 없다면, 인라인을 사용할 수 없습니다. 관리자가이 동작을 복제 할 수 있는지 잘 모르겠습니다 만 인라인이 청구서에 맞다고 생각하지 않습니다.

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

+8

수치스러운 일입니다. 모델 A가 실제로 인라인 모델 B에 외래 키를 가지고 있지 않은 경우를 쉽게 상상할 수 있지만 Bs의 QuerySet은 A의 필드/메소드를 사용하여 재정의 된 InlineModelAdmin의 get_queryset()을 통해 제공 될 수 있습니다. . – gregoltsov