Возможно расширение Django ModelForm
дополнительными полями. Представьте, что у вас есть пользовательская модель пользователя и это ModelForm
:
class ProfileForm(forms.ModelForm):
class Meta:
model = User
fields = ['username', 'country', 'website', 'biography']
Теперь представьте, что вы хотите включить дополнительное поле (отсутствует в вашей пользовательской модели, скажем, аватар изображения). Расширьте свою форму, выполнив это:
from django import forms
class AvatarProfileForm(ProfileForm):
profile_avatar = forms.ImageField()
class Meta(ProfileForm.Meta):
fields = ProfileForm.Meta.fields + ('profile_avatar',)
Наконец (учитывая, что форма имеет ImageField
), не забудьте включить request.FILES
при создании формы в вашем представлении:
# (view.py)
def edit_profile(request):
...
form = AvatarProfileForm(
request.POST or None,
request.FILES or None,
instance=request.user
)
...
Надеюсь, это поможет. Удачи!
РЕДАКТИРОВАТЬ:
В атрибуте AvatarProfileForm.Meta.fields я получаю сообщение об ошибке «можно объединить только кортеж (не« список ») и кортеж»). Изменил его на кортеж, и это сработало.