[Answer]-Django admin removes selected choice in ModelChoiceField on edit?

1👍

To preselect the currently selected category instance you can set its primary key to the field’s initial value by overriding __init__() on the ModelForm:

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
👤sthzg

Leave a comment