python - 在 Django 中验证表单后如何更新模型的一个属性?
问题描述
我有一个模型
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 中更新模型的状态参数?
解决方案
更改form['status'] = 1
为form.cleaned_data['status'] = True
当表单被验证时,它的数据也被“清理”(即合并为一种统一格式),并存储在一个名为 的字典cleaned_data
中,在保存表单时使用该字典。你应该在那里编辑它。
虽然,我不完全确定,一个 BooleanField 可能会期望True
而不是1
.
也可以先保存实例,然后再编辑状态:
instance = form.save()
instance.status = True
instance.save()
推荐阅读
- python - 使用 PyAV 将视频直接读入 Numpy(无迭代)
- arduino - ArduinoHttpClient 不会发布 json
- machine-learning - `sklearn.model_selection.RandomizedSearchCV` 是如何工作的?
- gatsby - 盖茨比和盖茨比-主题-docz
- python - 使用 BeatifulSoup Python 抓取滚动网页时出现问题
- macos - 当我尝试 npm install react-navigation 时,我不断收到此错误错误:EACCES:权限被拒绝
- javascript - 我可以在不删除 JS 中的函数调用的情况下限制函数吗?
- python - 在python中输入二进制值
- javascript - React - await until data fetches from API
- c# - 从 DataGrid 中取消的命令参数