1

我的自定义管理器代码如下:

class CustomManager(models.Manager):
    def create(self, **kwargs):
        obj, created = Group.objects.get_or_create(name='group1')
        kwargs.update({'groups': obj})
        return super(CustomManager, self).create(**kwargs)

这会创建TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use groups.set() instead..

4

1 回答 1

2

如指定的那样,您不能直接groups=在创建中传递 a。例如,您可以使用.set(…)[Django-doc](或.add(…)[Django-doc]),所以:

class CustomManager(models.Manager):
    def create(self, **kwargs):
        object = super(CustomManager, self).create(**kwargs)
        group, __ = Group.objects.get_or_create(name='group1')
        object.groups.set([group])
        return object
于 2020-05-31T19:23:21.343 回答