Django:OnetoOne关系使用fixture和uuid
我有一个名为user的模型,另一个名为patient,如下所示:Django:OnetoOne关系使用fixture和uuid,django,uuid,django-fixtures,Django,Uuid,Django Fixtures,我有一个名为user的模型,另一个名为patient,如下所示: class Patient(Model): user = OneToOneField('users.User', on_delete=CASCADE, related_name="patient", blank=True, null=True) class User(Model): id = models.UUIDField(primary_key=True,
class Patient(Model):
user = OneToOneField('users.User', on_delete=CASCADE, related_name="patient",
blank=True, null=True)
class User(Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
所有迁移都正常工作,现在我正尝试使用fixture向数据库添加一些数据。用户装置工作正常,但患者装置似乎无法检测用户的UUID:
django.db.utils.IntegrityError: Problem installing fixtures: insert or update on table "patients_patient" violates foreign key constraint "patients_patient_user_id_b53513b7_fk_users_user_id"
DETAIL: Key (user_id)=(97179680-7042-11ea-bc55-0242ac130003) is not present in table "users_user".
以下是我的固定装置的外观:
病人固定装置
用户装置
我如何解决这个问题?好的,找到了解决方案!不要使用
id
只需使用pk确定,找到解决方案!不要使用id
只要使用pk
试试看,这似乎并不能解决问题……我已经检查了数据库,django似乎正在生成一个新的uuid,而不管我在夹具中设置的pk如何。但我仍然不知道如何避免这种情况,尝试一下,这似乎并不能解决问题……我已经检查了数据库,似乎django正在生成一个新的uuid,而不管我在夹具中设置的pk如何。我仍然不知道如何避免这种情况
[{
"model": "patients.patient",
"id": 1,
"fields": {
"user": "97179680-7042-11ea-bc55-0242ac130003"
}
},
]
[
{
"model": "users.User",
"id": "97179680-7042-11ea-bc55-0242ac130003",
}
},
]