2016-10-13 49 views
0

我可以添加Criterias到一個地方。如何將Places添加到條件?如何使用GenericTabularInline通過反轉關係在admin中添加獲取數據?

型號:

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) 

管理員 - 地點部分:

class PlaceCriteriasInlineAdmin(GenericTabularInline): 
    model = PlacesToCriterias 

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

admin.site.register(Places, PlacesAdmin) 

在這種情況下,當我打開Places管理員更改頁面,我可以添加Criterias項目,我的 '地點'。

管理 - 規定 - 部分:

class CriteriaPlacesInlineAdmin(GenericTabularInline): 
    model = PlacesToCriterias 

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

admin.site.register(Criterias, CriteriasAdmin) 

在這種情況下,當我打開Criterias管理變化頁,我不能Places項目添加到我的「標準」,因爲不是可能places我看到criterias

如何獲得Places項目Criterias管理頁面?

回答

0

這很容易。如果有人需要得到與選擇的對象下拉列表GenericTabularInline必須改變,以admin.TabularInline

class CriteriaPlacesInlineAdmin(admin.TabularInline): 
    model = PlacesToCriterias 

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

admin.site.register(Criterias, CriteriasAdmin) 

,而不是content_typeobject_id領域,解決的辦法是here

相關問題