Django管理员。 TabularInline。如何在TabulatInline视图中显示与ForeignKey相关的模型

时间:2018-12-08 15:48:18

标签: django foreign-keys django-admin

我试图在django-admin中显示相关模型的相关模型。 现在,我的模型和admin.py看起来像:

class CharacterChoiceInline(admin.TabularInline):
    model = CharacterModel
    fields = ['nickname', 'gender', 'image']
    extra = 1


class UserModelAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': [
                'username', 'email', 
                ...
            ]
        })
    ]
    inlines = [CharacterChoiceInline]

admin.site.register(User, UserModelAdmin)

我的CharacterModel与另一个模型RaceModel相关。

class RaceModel(models.Model):
    name = models.CharField("Race", max_length=254)
    character = models.ForeignKey("CharacterModel",
        null=True, blank=True, on_delete=models.SET_NULL, related_name='+')


class CharacterModel(models.Model):
    nickname = models.CharField("Character nickname", max_length=254)
    gender = models.CharField(choices=GENDER, max_length=10, default='male')
    image = models.URLField(blank=True)

在Admin中,它看起来像这样:

enter image description here

如何在RaceModel中添加此额外的CharacterChoiceInline(admin.TabularInline):字段,以便能够通过用户管理员视图为每个字符选择“种族”?

1 个答案:

答案 0 :(得分:0)

您可能会发现首先为单个CharacterModel创建一个管理页面,使它正常工作,然后再回到UserModel管理屏幕上工作,会很有帮助。

您要尝试做的很简单。只需将一个名为race的ForeignKey字段添加到CharacterModel即可。它会以种族选项的下拉选择形式显示在您的表单中。我建议在RaceModel中添加一个明确的id字段;您不想按名称链接字段。您希望主键在编辑文本时不会改变。