我有一個模型
class Tutor(models.Model):
name = models.CharField(max_length=100)
qualification = models.CharField(max_length=100)
experience = models.CharField(max_length=200)
tution_fee = models.CharField(max_length=100)
about = models.CharField(max_length=1000)
demo_classes_link = models.CharField(max_length=1000)
contact_number = models.CharField(max_length=10)
email_id = models.EmailField(null=True, blank=True)
material = models.CharField(max_length=1000)
status = models.BooleanField(null=True, blank=True)
和一個表格
class GeeksForm(forms.ModelForm):
# specify the name of model to use
class Meta:
model = Tutor
fields = "__all__"
現在我已經使用 POST API 表單捕獲了所有資料進行驗證。
def registration(request) :
form = GeeksForm(request.POST)
# Check if the form is valid:
if form.is_valid():
number = request.POST['contact_number']
print(number)
r = requests.get('http://apilayer.net/api/validate?access_key=***********&number=*******&country_code= 91&format=1', params=request.GET)
if r.status_code == 200:
form['status'] = 1 # I want to update this once is form is validated, django throws an error.
form.save()
return HttpResponse('Yay, it worked')
currentID = form.auto_id
print(currentID)
# form = GeeksForm()
else :
print("Invalid")
return render(request, 'Tutorform.html', {'form': form})
表單驗證成功后,如何在 django 中更新模型的狀態引數?
uj5u.com熱心網友回復:
更改form['status'] = 1為form.cleaned_data['status'] = True
當表單被驗證時,它的資料也被“清理”(即合并為一種統一格式),并存盤在名為 的字典中cleaned_data,在保存表單時使用。你應該在那里編輯它。
雖然,我不完全確定,一個 BooleanField 可能會期望True而不是1.
也可以先保存實體,然后再編輯狀態:
instance = form.save()
instance.status = True
instance.save()
uj5u.com熱心網友回復:
檢索底層模型實體,更改欄位值并保存表單。
if r.status_code == 200:
myform = form.save(commit=False) #returns model instance object
myform.status = True
myform.save()
return HttpResponse('Yay, it worked')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/352955.html
標籤:Python 姜戈 django-forms
