python – Django表单测试使用外键模型字段生成错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django表单测试使用外键模型字段生成错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2248字,纯文字阅读大概需要4分钟。
内容图文
![python – Django表单测试使用外键模型字段生成错误](/upload/InfoBanner/zyjiaocheng/794/9bf3aa3c029545bda18596b65101edfa.jpg)
测试提交的表单时遇到问题.在使用models.ForeignKey定义的字段中,测试会生成错误.
字段gender_opt在models.py中定义为
class Patient(models.Model):
gender_opt = models.ForeignKey(GenderOption, null=False, blank=False)
用ForeignKey给出
class GenderOption(models.Model):
gender_txt = models.CharField(max_length=50)
在我的forms.py我有
class PatientForm(ModelForm):
class Meta:
model = Patient
fields = [
other fields
'gender_opt'
]
widgets = {
other widgets
'gender_opt': Select(attrs={'class': 'form-control', 'id': 'gender_id', 'required': "",
'data-error': "Gender must be filled"}),
}
我的test.py是
from django.test import TestCase
from django.contrib.auth.models import *
class FormValidation(TestCase):
def test_patient_add_ok(self):
"""test save patient data successfuly"""
data = {u'cpf_id': [u'248.215.628-98'], u'state_txt': [u'RJ'],
u'citizenship_txt': [u'BR'], u'name_txt': [u'Test pacient'],
u'date_birth_txt': [u'15/01/2003'], u'country_txt': [u'BR'],
u'gender_opt': [u'1']}
response = self.client.post('/quiz/patient/new/', data)
errors = response.context['patient_form'].errors
在错误中,我收到了以下消息:
Select a valid choice. That choice is not one of the available choices.
test.py中的URL“/ quiz / patient / new /”指向视图(在views.py中)
def patient_create(request, template_name="quiz/register.html"):
gender_options = GenderOption.objects.all()
patient_form = PatientForm()
if request.method == "POST":
patient_form = PatientForm(request.POST)
if patient_form.is_valid():
new_patient = patient_form.save(commit=False)
new_patient.save()
context = {'patient_form': patient_form,
'gender_options': gender_options,
}
return render(request, template_name, context)
我想问题是models.ForeignKey字段类型.
感谢任何帮助.
解决方法:
首先,您需要创建一个GenderOption对象.此外,在测试表单时,实际上不需要使用self.client发出请求:
class FormValidation(TestCase):
def test_patient_add_ok(self):
"""test save patient data successfully"""
# create GenderOption
gender_opt = GenderOption.objects.create(gender_txt='M')
data = {u'cpf_id': [u'248.215.628-98'], u'state_txt': [u'RJ'],
u'citizenship_txt': [u'BR'], u'name_txt': [u'Test pacient'],
u'date_birth_txt': [u'15/01/2003'], u'country_txt': [u'BR'],
u'gender_opt': [str(gender_opt.id)]}
form = PatientForm(data=data)
self.assertTrue(form.is_valid())
...
内容总结
以上是互联网集市为您收集整理的python – Django表单测试使用外键模型字段生成错误全部内容,希望文章能够帮你解决python – Django表单测试使用外键模型字段生成错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。