Django 在测试中创建多对多关系

Django 在测试中创建多对多关系,django,selenium,django-testing,django-tests,Django,Selenium,Django Testing,Django Tests,我有一种多对多的关系: 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) 我正在加载我的夹具测试数据,填充我的“Ba

我有一种多对多的关系:

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']
然后创建一个用户对象,但我不知道如何在用户和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])

非常感谢你!我不知道我到底为什么需要这些括号,我确信我以前在调用set:s时从未使用过它们。。无论如何,如果您使用
BaseModule.objects.filter(…)
而不是
.get(pk=1)
,请跳过括号,谢谢。