Install with pip install djhacker
and then:
import djhacker
djhacker.formfield(
YourModel.your_field,
YourFormField,
custom_form_field_kwarg='something',
)
This will make any Django ModelForm render a
YourFormField(custom_form_field_kwarg='something')
by default, plus
whatever other kwargs it wants to add, you won't have to use any specific model
form, this will work natively in the admin for instance.
You can register custom form field for model field types:
@djhacker.register(models.ForeignKey)
def custom_fk_formfield(model_field, **kwargs):
return YourFormField, {
'custom_form_field_kwarg': 'something',
**kwargs,
)
# you don't need to pass extra arguments anymore for ForeignKey fields:
djhacker.formfield(YourModel.some_fk, queryset=Some.objects.all())