Как я уже говорил в названии: ЭкземплярДжанго экземпляра изменение формы атрибута перед сохранением
def profile(request, template='/member/profile.html'):
.....
member = get_object_or_404(Member, id=id)
# >>> member.qrcode
# <ImageFieldFile: upload/qrcode/2014-11-12/99_1.41578387725e12.jpg>
if request.method == 'POST':
form = ProfileForm(request.POST, request.FILES, instance=member)
# >>> member.qrcode
# <ImageFieldFile: 20140901192104.png>
if form.is_valid():
member = form.save(commit=False)
.....
Форма member
изменить сразу после form = ProfileForm(request.POST, request.FILES, instance=member)
.
Потому что я хочу сохранить элемент только тогда, когда member.type == 1
и изменить какое-либо поле в соответствии с результатом сравнения некоторых данных в member
и form.cleaned_data
.
Я думаю, что очень плохо изменить атрибут member
перед тем, как позвонить form.save()
.
Как его изменить?
Он ничего плохого в таком подходе - это документально. Также в некоторых случаях вы можете использовать 'pre_save' https://docs.djangoproject.com/en/dev/ref/signals/#pre-save где' instance == form.save (commit = False) ' – madzohan
изменение члена экземпляра сразу после 'form = ProfileForm (request.POST, request.FILES, instance = member)', а не 'member = form.save (commit = False)' .member был изменен до 'if form.is_valid():'. – Mithril
нет, он создает объект 'ProfileForm' https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method – madzohan