Django admin在编辑时删除ModelChoiceField中选定的选项?

2024-09-27 21:30:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的管理代码中使用了admin.TabularInline,我为其定制了一个表单。在

class RateCardForm(forms.ModelForm):
    category = forms.ModelChoiceField(queryset=models.Category.objects.all(), label='Category')

    class Meta:
        model = models.RateCard
        fields = ('category')

class RateCardInline(admin.TabularInline):
    model = models.RateCard
    form = RateCardForm
    extra = 3

问题是,在我保存了模型实例之后,每当我编辑模型实例时,它都会删除预先选择的选项,我必须再次选择该选项。有什么办法阻止它吗?在

同样对于ModelChoiceField如果我不指定标签,那么它将在管理页面上显示为None,但我不需要为admin.StackedInline指定它。在


Tags: 实例代码模型modeladminmodels选项forms
1条回答
网友
1楼 · 发布于 2024-09-27 21:30:38

要预选当前选定的类别实例,可以通过重写ModelForm上的__init__()将其主键设置为字段的initial值:

class RateCardForm(forms.ModelForm):
    category = forms.ModelChoiceField(queryset=models.Category.objects.all(), label='Category')

    class Meta:
        model = models.RateCard
        fields = ('category')

    def __init__(self, *args, **kwargs):
        super(RateCardForm, self).__init__(*args, **kwargs)
        instance = kwargs.get('instance')
        # Instance will be None for the empty extra rows.
        if instance:
            selected_pk = # query the primary key of the currently selected category here
            self.fields['category'].initial = selected_pk

相关问题 更多 >

    热门问题