Python form.save()前面的行未保存正确的值
我有一个模型表单视图,Python form.save()前面的行未保存正确的值,python,django,Python,Django,我有一个模型表单视图,ModelForm实际上并不包含模型中的所有字段。在form.save()之前,我使用了form.field=value方法的其他字段,但所有这些字段都保存为默认值。没有人接受我试图给予的价值。代码如下: def PostAd(request): ad_post_form = AdPostForm() if request.user.is_authenticated: obj = Account.objects.get(user=reques
ModelForm
实际上并不包含模型中的所有字段。在form.save()
之前,我使用了form.field=value
方法的其他字段,但所有这些字段都保存为默认值。没有人接受我试图给予的价值。代码如下:
def PostAd(request):
ad_post_form = AdPostForm()
if request.user.is_authenticated:
obj = Account.objects.get(user=request.user)
if request.method == "POST":
ad_post_form = AdPostForm(request.POST, request.FILES)
if ad_post_form.is_valid():
ad_post_form.created_by = request.user
if obj.role == 'admin':
ad_post_form.is_active = True
ad_post_form.save()
return redirect('home')
else:
ad_post_form = AdPostForm(request.POST, request.FILES)
else:
if request.method == "POST":
ad_post_form = AdPostForm(request.POST, request.FILES)
if ad_post_form.is_valid():
otp_number = random.randint(100000, 999999)
ad_post_form.otp = otp_number
ad_post_form.is_activated = False
ad_post_form.save()
current_id = ad_post_form.id
current_contact_email = request.POST.get('contact_email')
email_url_active = str(settings.URL_LOCAL) + 'new_ad/adidnumberis' + str(
current_id) + '/needactivate/activate/' + str(otp_number) + '/'
email_msg = "Please Confirm adding the Ad to Jehlum. Click link " + email_url_active
email = EmailMessage('Active Email', email_msg, to=[current_contact_email])
email.send()
return redirect('home')
else:
ad_post_form = AdPostForm()
context = {
'ad_post_form': ad_post_form,
}
return render(request, 'pages/post-ad.html', context)
问题是ad\u post\u表单。is\u active=True
保存为False(默认)
另外,
ad_post_form.otp=otp_number
被保存为0(默认值),我需要给出我在这里分配的特定值 您需要获取模型实例并在那里设置属性。您可以通过调用save with commit=False来实现这一点
if ad_post_form.is_valid():
ad_post = ad_post_form.save(commit=False)
ad_post.created_by = request.user
...
ad_post.save()
您需要获取模型实例并在那里设置属性。您可以通过调用save with commit=False来实现这一点
if ad_post_form.is_valid():
ad_post = ad_post_form.save(commit=False)
ad_post.created_by = request.user
...
ad_post.save()