使用django1.11.4
。
我正在尝试创建一个用于向数据库添加项目的页面,但是,要做到这一点,我需要创建/获取几个不同的对象,(产品,制造商,供应商),其形式构成整体的一部分添加项目的表单。
在大多数情况下,将会有现有的产品,制造商和供应商。所以我想检索现有对象并将其用作相关表单的外键。例如制造商是产品的外键。
但是,当我尝试提交现有对象的详细信息时,对于所有表单。例如供应商。 is_valid失败。错误是:<ul class="errorlist"><li>supplier_name<ul class="errorlist"><li>Supplier with this Supplier name already exists.</li></ul></li></ul>
是否有办法使用现有数据提交表单&#39;所以我可以作为外键传递。
感谢您的时间。
class SupplierTestCase(FormTestCase, BasicTests):
@classmethod
def setUpTestData(cls):
super(SupplierTestCase, cls).setUpTestData()
cls.form = SupplierForm
def setUp(self):
super(SupplierTestCase, self).setUp()
self.data = {'supplier_name_text': self.supplier_name}
self.blank_data = {
'supplier_name_text': ['This field is required.']
}
def test_valid_data(self):
form = self.form(self.data)
self.assertTrue(form.is_valid())
commit = form.save()
self.assertEqual(commit.supplier_name_text, self.supplier_name)
def test_get_data(self):
form = self.form(self.data)
self.assertTrue(form.is_valid())
if form.is_valid():
commit = form.save()
self.assertEqual(commit.supplier_name_text, self.supplier_name)
form = self.form(self.data)
#The problem is below vvvv
self.assertTrue(form.is_valid())
if form.is_valid():
commit = form.save(commit=False)
data = model_to_dict(commit)
get, created = Supplier.objects.get_or_create(supplier_name_text=data.get('supplier_name_text'))
self.assertFalse(created)
模型
class Supplier(models.Model):
"""
The Supplier
"""
supplier_name = models.CharField(max_length=200, unique=True)
def __str__(self):
return self.name_text
答案 0 :(得分:0)
class Supplier(models.Model):
"""
The Supplier
"""
name_text = models.CharField(max_length=200, unique=True <<<------- Take a look)
def __str__(self):
return self.name_text
你提供的名字中有唯一= True,这意味着你不能添加两个同名的