Python django在使用相关对象管理器的create方法时如何分配外键?
Django在使用相关对象管理器的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
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)