Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何使用';通过';与固定装置的关系?_Django_Django Models_Pytest_Fixtures_Pytest Django - Fatal编程技术网

Django 如何使用';通过';与固定装置的关系?

Django 如何使用';通过';与固定装置的关系?,django,django-models,pytest,fixtures,pytest-django,Django,Django Models,Pytest,Fixtures,Pytest Django,在测试(fixture)中,我想添加具有“through”关系的多个字段,即 my_field = models.ManyToManyField(SomeModel, through=AnotherModel). 尝试添加类似常规的许多字段,如: object.my_field.add(my_field) 但它给了我一个警告信息: 此外,我还尝试了以下方法: object.my_field.add(my_field, through_defaults=AnotherModel) 也不起作用

在测试(fixture)中,我想添加具有“through”关系的多个字段,即

my_field = models.ManyToManyField(SomeModel, through=AnotherModel).
尝试添加类似常规的许多字段,如:

object.my_field.add(my_field)
但它给了我一个警告信息:

此外,我还尝试了以下方法:

object.my_field.add(my_field, through_defaults=AnotherModel)

也不起作用

您只需构造一个
AnotherModel
对象,因此:

AnotherModel.objects.create(firstmodel=object, somemodel=myfield)
有关通过默认设置的
的更多信息,请参阅。其中包含一个示例,如:

beatles.members.set([john,paul,ringo,george],通过默认值={'date\u joined':date(1960,8,1)})

在本例中,
披头士
对象的
成员
是一个带有中间模型的
ManyToManyField
,这里我们填写
日期(1960,8,1)
作为
date\u加入该模型的值。

@DinaNasyrkhan:a
ManyToManyField
只不过是一个模型,它有两个与其链接的模型的
外键。如果您自己没有通过
模型指定一个
,Django会自动创建一个。在窗帘后面,如果你使用
.add()
,它将创建一个
AnotherModel
,因此添加一个额外的固定装置确实没有多大用处。看,我有这个:restaurant.contract.add(contract,通过默认值=restaurant\u contract),这里restaurant\u contract是另一个固定装置(带有AnotherModel.objects.create)(firstmodel=object,somemodel=myfield))。这仍然给我一个错误。也尝试过:restaurant.contract.add(contract,通过默认值={'restaurant'=restaurant,'contract'=contract}),仍然不起作用,如果我没有添加额外的文件,并像restaurant.contract.add(contract)一样离开,它说它不正确(上面的警告消息)。有什么解决办法吗?@DinaNasyrkhan:我在[implementation of
.add(…)
]中找不到错误消息,也许你使用了一些信号、其他插件等来防止这种情况。但我设法复制了添加关系对象。@DinaNasyrkhan:你有没有可能使用旧版本的Django?在2.2之前使用
.add(..)
对于具有
模型的m2m字段,iirc是不可能的。
object.my_field.add(my_field, through_defaults={'field1': 14, 'field2': 25})
beatles.members.set([john, paul, ringo, george], through_defaults={'date_joined': date(1960, 8, 1)})