2

假设我有 3 个模型:
棋手
锦标赛
参与

“参与”是另外两个的连接表。

结构体

我在管理面板中使用以下 InlineFormSet 来显示参与模型中的一些字段。

from .models import Participation


class ParticipationInline(admin.TabularInline):
    model = Participation
    formset = ParticipationAdminFormset


class BaseParticipationAdminFormset(BaseInlineFormSet):
    def clean(self):
        # Some code
        # ...

    def _construct_form(self, i, **kwargs):
        # Some code
        # ...


ParticipationAdminFormset = inlineformset_factory(
    Tournament, Participation,
    formset=BaseParticipationAdminFormset,
    fields=("chess_player_id", "tournament_id", "is_active")
)

问题:如何将“Chess_Player”模型中的任何字段(例如“first_name”)包含到上面的 FormSet 中?

4

1 回答 1

1

经过一番冲浪,我设法解决了这个问题:我所要做的就是添加只读字段并包含 chess_player 属性:

class ParticipationInline(admin.TabularInline):
    model = Participation
    formset = ParticipationAdminFormset
    readonly_fields = ['chess_player_name']

    def chess_player_name(self, instance):
        return instance.chess_player.first_name
于 2019-08-29T05:41:10.267 回答