Python django在使用相关对象管理器的create方法时如何分配外键?

Python django在使用相关对象管理器的create方法时如何分配外键?,python,django,django-models,django-managers,Python,Django,Django Models,Django Managers,Django在使用相关对象管理器的create方法时如何分配外键 我这样问是因为当我创建自己的create方法时,外键不会自动设置 以下是一个例子: class ModelAQuerySet(models.QuerySet): def create(self, **kwargs): print('create:') print(kwargs) return super().create(**kwargs) def create_w

Django在使用相关对象管理器的
create
方法时如何分配外键

我这样问是因为当我创建自己的
create
方法时,外键不会自动设置

以下是一个例子:

class ModelAQuerySet(models.QuerySet):
    def create(self, **kwargs):
        print('create:')
        print(kwargs)
        return super().create(**kwargs)

    def create_with_other_options(self, **kwargs):
        print('create_with_other_options:')
        print(kwargs)
        return self.create(**kwargs)

class ModelABaseManager(models.Manager):
    use_for_related_fields = True    

ModelAManager = ModelABaseManager.from_queryset(ModelAQuerySet)

class ModelA(models.Model):
    objects = ModelAManager()
    user = models.ForeignKey('User', related_name='modela_set')
当我使用这些方法时:

>>> u = User.object.get(...)
>>> a1 = u.modela_set.create() # it works, user is set automatically
create:
{..., 'user': <User: id:1 email:"...">}

>>> a2 = u.modela_set.create_with_other_options() # it does not work, user is not set automatically
create_with_other_options:
{}
IntegrityError: null value in column "user_id" violates not-null constraint
u=User.object.get(…) >>>a1=u.modela_set.create()#它可以工作,用户是自动设置的 创建: {…,'user':} >>>a2=u.modela_set。使用其他选项()创建_#它不起作用,用户未自动设置 使用其他\u选项创建\u: {} IntegrityError:“用户id”列中的null值违反了NOTNULL约束
在您的第五行尝试使用此选项:

return super(ModelAQuery, self).create(**kwargs)