2016-10-13 4 views
0

Criterias을 장소에 추가 할 수 있습니다. 기준에 Places을 어떻게 추가합니까?GenericTabularInline을 사용하여 역 관계를 통해 admin에 get 데이터를 추가하는 방법은 무엇입니까?

모델 : - : 나는 Places 관리자 변경 페이지를 열 때, 나는 나의 '장소'에 Criterias 항목을 추가 할 수 있습니다,이 경우

class PlaceCriteriasInlineAdmin(GenericTabularInline): 
    model = PlacesToCriterias 

class PlacesAdmin(admin.ModelAdmin): 
    inlines = [PlaceCriteriasInlineAdmin] 

admin.site.register(Places, PlacesAdmin) 

class Criterias(models.Model): 
    name = ... 

class Places(models.Model): 
    name = ... 

class PlacesToCriterias(models.Model): 
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) 
    object_id = models.PositiveIntegerField() 
    content_object = GenericForeignKey() 

    criteria_group = models.ForeignKey(Criterias) 

관리자는 일부 배치합니다.

관리 - CRITERIAS 부분 :이 경우

class CriteriaPlacesInlineAdmin(GenericTabularInline): 
    model = PlacesToCriterias 

class CriteriasAdmin(admin.ModelAdmin): 
    inlines = [CriteriaPlacesInlineAdmin] 

admin.site.register(Criterias, CriteriasAdmin) 

, 내가 Criterias 관리자 변경 페이지를 열 때 대신 places 수의 내가 criterias를보기 때문에, 나는 내 '기준'에 Places 항목을 추가 할 수 없습니다.

PlacesCriterias admin 페이지의 항목을 얻는 방법은 무엇입니까?

답변

0

아주 쉬웠습니다. 사람이 선택한 개체에 드롭 다운 목록을 얻을 필요가있는 경우 GenericTabularInline 솔루션은 here입니다 대신 content_typeobject_id 필드로, admin.TabularInline

class CriteriaPlacesInlineAdmin(admin.TabularInline): 
    model = PlacesToCriterias 

class CriteriasAdmin(admin.ModelAdmin): 
    inlines = [CriteriaPlacesInlineAdmin] 

admin.site.register(Criterias, CriteriasAdmin) 

로 변경해야합니다.