Django:assert';多对多';关系存在于测试中

Django:assert';多对多';关系存在于测试中,django,django-testing,Django,Django Testing,我正在为我的项目编写测试,但在尝试验证“多人”关系的存在时遇到了问题 该测试涉及以下两个模型,它们通过多个模型链接在一起 型号: class Project(models.Model): (...) linked_attributes = models.ManyToManyField(attributes, blank=True) class Attributes(models.Model): (...) class linked_projects = mod

我正在为我的项目编写测试,但在尝试验证“多人”关系的存在时遇到了问题

该测试涉及以下两个模型,它们通过多个模型链接在一起

型号:

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


class Attributes(models.Model):
    (...)
    class linked_projects = models.ManyToManyField(Project, blank=True)
在我的测试中,我想验证表单是否创建了新的多对多关系。我在最后一行根据一些示例代码创建了assert,但它似乎不起作用

测试:


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

你的模型结构错了。你应该只在关系的一方定义多对多;另一端通过反向关系访问

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

最后,在断言之前,您是否真的有一些代码来验证和保存表单?否则一切都不会改变

因此:

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())
self.assertTrue(form.is_valid())
saved_project = form.save()
self.assertTrue(saved_project.attributes_set.exists())