在测试中创建多对多关系

Create A Many-To-Many Relationship In A Test

我有一个多对多的关系:

class Person(models.Model):
    modules = models.ManyToManyField(BaseModule, blank=True)

class BaseModule(models.Model):
    task_type = models.CharField(max_length=200)
    topic = models.CharField(max_length=200)

我正在加载我的固定装置测试数据,填充我的 'BaseModule' 数据库:

fixtures = ['test/fixtures/initial_data.json']

然后创建一个 User 对象,但我不知道如何在 User 和 BaseModule 之间创建关系。

我尝试了很多东西,包括:

# this works, but creates a new BaseModule, I want to create a relationship with one generated in 'fixtures'
test = person.modules.create(topic='test')
test.save()

# this doesnt work
testModule = BaseModule.objects.get(pk=1)
person.modules.set(testModule)

# this doesnt work either
person.modules.create()
person.modules.basemodule_id = 1
person.refresh_from_db()

for module in person.modules.all():
    print("module.topic:")
    print(module.topic)
    print("end")

谢谢。

#this doesnt work
testModule = BaseModule.objects.get(pk=1)
person.modules.set(testModule)

你应该加括号[]

testModule = BaseModule.objects.get(pk=1)
person.modules.set([testModule])