Django管理员。表林线。如何在列表视图中显示ForeignKey相关模型

Django管理员。表林线。如何在列表视图中显示ForeignKey相关模型,django,foreign-keys,django-admin,Django,Foreign Keys,Django Admin,我试图在我的django管理员中显示相关模型的相关模型。 现在,我的模型和admin.py看起来像: class CharacterChoiceInline(admin.TabularInline): model = CharacterModel fields = ['nickname', 'gender', 'image'] extra = 1 class UserModelAdmin(admin.ModelAdmin): fieldsets = [

我试图在我的django管理员中显示相关模型的相关模型。 现在,我的模型和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)
我的角色模型与另一个模型相关

在管理中,看起来是这样的:


如何在CharacterChoiceInlineadmin.TableInLine中添加此附加的RaceModel字段:以便能够通过用户管理视图为每个角色选择race?

您可能会发现,首先为单个CharacterModel创建一个管理页面,以使其正常工作,然后返回到UserModel管理屏幕


你想做的是直截了当的。只需在CharacterModel中添加一个名为race的ForeignKey字段。它将显示在您的表单中,作为带有竞赛选项的下拉选择。我建议在您的模型中添加一个显式id字段;您不想按名称链接字段。您需要一个在编辑文本时不会更改的主键。

字符只能有一个种族,但种族可以有一个或多个字符,这就是我这样定义它的原因是,如果您向CharacterModel添加一个名为race的ForeignKey字段,每个种族可以有很多字符。我可以通过种族模型查询所有相关字符吗?假设:种族人类有120个字符对象,您可以在种族对象上迭代反向关系charactermodel_set。
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)