Пользовательский виджет 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/