如何使用 GenericTabularInline 通过反向关系 add\get 管理中的数据?

How to add\get data in admin via reversed relation using GenericTabularInline?

我可以将 Criterias 添加到一个地方。如何将 Places 添加到标准?

型号:

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)

管理员 - PLACES 部分:

class PlaceCriteriasInlineAdmin(GenericTabularInline):
    model = PlacesToCriterias

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

admin.site.register(Places, PlacesAdmin)

在这种情况下,当我打开 Places 管理员更改页面时,我可以将 Criterias 项添加到我的 'place'。

管理员 - 条件部分:

class CriteriaPlacesInlineAdmin(GenericTabularInline):
    model = PlacesToCriterias

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

admin.site.register(Criterias, CriteriasAdmin)

在这种情况下,当我打开 Criterias 管理员更改页面时,我无法将 Places 项目添加到我的 'criteria',因为我看到 places 而不是可能的criterias.

如何在 Criterias 管理页面获取 Places 项?

这很容易。 GenericTabularInline 必须改为 admin.TabularInline

class CriteriaPlacesInlineAdmin(admin.TabularInline):
    model = PlacesToCriterias

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

admin.site.register(Criterias, CriteriasAdmin)

如果有人需要获取包含所选对象的下拉列表,而不是 content_typeobject_id 字段,解决方案是