Пользовательский виджет Django Admin для ForeignKey

Это звучит как банальный вопрос, но на него не так просто ответить:

Как бы вы отобразили поле ForeignKey в качестве флажка в Django Admin и сохранили зарегистрированного в данный момент пользователя всякий раз, когда этот пользователь устанавливает флажок в Admin?

Пример:

class MyModel(models.Model):
    ...
    approved = models.ForeignKey(User)
    ...

admin.site.register(MyModel)

Как бы я мог отобразить approved поле в качестве флажка?

Заранее большое спасибо за вашу помощь!

3 ответа

В вашем form.py:

class YOURMODELForm(forms.ModelForm):
    approved = forms.ModelChoiceField(queryset=User.objects.order_by('name'))

Вы могли бы использовать get_form метод на вашем ModelAdmin и настроить форму по вашему желанию.

В этом случае вам придется изменить виджет полей на флажок и установить значение request.user при проверке формы (если флажок установлен).

Вы можете настроить его следующим образом в admin.py

class MyModelWidget(forms.ModelForm):
    approved = forms.BooleanField(widget=forms.CheckboxInput())

    class Meta:
        model = MyModel
admin.site.register(MyModel, MyModelWidget)

См. https://docs.djangoproject.com/en/1.9/ref/contrib/admin/

Другие вопросы по тегам