gpt4 book ai didi

python - 在 Django 管理站点中,如何通过内联访问模型属性?

转载 作者:太空狗 更新时间:2023-10-29 21:42:36 25 4
gpt4 key购买 nike

模型.py:

class Player(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField(max_length=50)

class Tournament(models.Model):
name = models.CharField(max_length=50)

class TournamentPlayer(models.Model):
tournament = models.ForeignKey(Tournament)
player = models.ForeignKey(Player)
paid = models.BooleanField()

def player_email(self):
return self.player.email

管理员.py:

class TournamentPlayerInline(admin.TabularInline):
model = TournamentPlayer
fields = ('player', 'paid', 'player_email')

@admin.register(Tournament)
class TournamentAdmin(admin.ModelAdmin):
inlines = [TournamentPlayerInline]

我有一个内联问题。当我在管理站点中打开锦标赛时,我可以看到哪些玩家参加了比赛,以及他们是否支付了费用。我还想显示播放器中包含的额外信息,例如电子邮件地址。

在 TournamentPlayerInline 中,我认为我可以使用 fields = ('player', 'paid', 'player_email') 但我得到了 FieldError: Unknown field(s) (player_email) 指定给 TournamentPlayer

我也试过 fields = ('player', 'paid', 'player__email'),但我得到了 FieldError: Unknown field(s) (player__email) specified for TournamentPlayer .

如果我将 player_emailfields 移动到 readonly_fields,我不再收到错误,但玩家电子邮件也不会显示.

这就是我想要的:

enter image description here

如何从 TournamentPlayerInline 访问玩家属性?

Django 1.8.4

最佳答案

猴子的回答几乎是正确的。您唯一需要做的更改是您的 admin.py,它只是将 'player_email' 添加到 fieldsreadonly_fields。更改 'player_email'fields 中的位置将允许您按照您的示例对其进行排序。

class TournamentPlayerInline(admin.TabularInline):
model = TournamentPlayer
fields = ('player', 'player_email', 'paid',)
readonly_fields = ('player_email',)

@admin.register(Tournament)
class TournamentAdmin(admin.ModelAdmin):
inlines = [TournamentPlayerInline]

关于python - 在 Django 管理站点中,如何通过内联访问模型属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32972838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com