【问题标题】:Adding extra fields to django InlineFormSet向 django InlineFormSet 添加额外的字段
【发布时间】:2019-12-30 15:41:13
【问题描述】:

假设我有 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?

【问题讨论】:

    标签: python django django-admin django-admin-tools


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2020-09-19
      • 2018-01-19
      • 2020-01-04
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 2015-08-26
      • 2011-04-14
      • 2015-06-19
      相关资源
      最近更新 更多