django 如何添加ManyToMany字段与'through'关系到装置?

ldioqlga  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(162)

在测试(装置)我想添加字段与ManyToMany字段与'通过'关系,即

my_field = models.ManyToManyField(SomeModel, through=AnotherModel).

尝试像常规ManyToManyField一样添加:

object.my_field.add(my_field)

但它给了我一个警告enter image description here
我也试过这个:

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

也没有用

hzbexzde

hzbexzde1#

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

AnotherModel.objects.create(firstmodel=object, somemodel=myfield)

如果AnotherModel包含没有默认值的额外字段,则还需要指定这些字段。
或者你可以使用**.add(…)[Django-doc],其中through_defaults应该包含一个dictionary**,其中包含要传递给AnotherModel的值:

object.my_field.add(my_field, through_defaults={'field1': 14, 'field2': 25})

有关through_defaults的详细信息,请参阅文档的 * 多对多关系的额外字段 * 部分。这包含一个示例,如:

beatles.members.set([john, paul, ringo, george], through_defaults={'date_joined': date(1960, 8, 1)})

在这个例子中,beatles对象的members是一个具有中间模型的ManyToManyField,这里我们将date(1960, 8, 1)填充为该模型中date_joined的值。

相关问题