Я не знаю, является ли это лучшим способом, но он работает: вы можете предоставить администратору свой собственный ModelForm, включая дополнительное поле (например, здесь: django -admin-add- настраиваемые поля формы, которые не являются частью модели ).
Код для приведенного выше примера может выглядеть примерно так (forms.py):
from django import forms
from .models import Question
class QuestionAdminForm(forms.ModelForm):
assign_order = forms.CharField(
max_length=50,
help_text=("Enter order of ids in comma separated list, "
"e.g. '0,1,2,3'")
)
def save(self, commit=True):
instance = super().save(commit)
assign_order = self.cleaned_data.get('assign_order', None)
order_list = [int(num) for num in assign_order.split(',')]
instance.set_answer_order(order_list)
if commit:
instance.save()
return instance
class Meta:
model = Question
fields = '__all__'