Django:断言测试中存在'Many-to-many'关系



我正在为我的项目编写测试,但是在试图验证'Manytomany'关系的存在时,我遇到了一个问题。

测试涉及以下两个模型,它们与ManyTomany

链接在一起

模型:

class Project(models.Model):
    (...)
    linked_attributes = models.ManyToManyField(attributes, blank=True)

class Attributes(models.Model):
    (...)
    class linked_projects = models.ManyToManyField(Project, blank=True)

在我的测试中,我想验证该表格是否为许多关系创造了许多新的关系。我基于一些示例代码在最后一行中创建了断言,但它似乎没有起作用。

测试:

class ProjectTest(TestCase):
    (...)
    form_data = {'linked_attributes' : self.attribute}
    form = ProjectForm(data=form_data, project=self.project, instance=self.project)
   self.assertTrue(Project.attributes_set.filter(pk=self.Project.pk).exists())

有人知道我做错了什么吗?

您的模型结构是错误的。您只能在关系的一个方面定义多一对;另一侧是通过反向关系访问的。

另外,您的断言是错误的。您需要通过项目实例查询链接的属性,而不是整个项目类。

最后,您实际上是否有一些代码来验证并保存表格?否则什么都不会改变。

so:

self.assertTrue(form.is_valid())
saved_project = form.save()
self.assertTrue(saved_project.attributes_set.exists())

最新更新