我在测试中使用了 Django 的固定装置。我需要创建 UserProfile 夹具。第一个问题是它指向用户条目。为了处理它,我使用自然键。所以我只是说 UserProfile 夹具的用户字段是用户夹具的实际用户名。
[
{
"pk": 8002,
"model": "auth.user",
"fields": {
"date_joined": "2012-08-28 10:00:00.000000+00:00",
"email": "",
"first_name": "",
"groups": [],
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": "2012-08-28 10:00:00.000000+00:00",
"last_name": "",
"password": "pbkdf2_sha256$10000$ltmEKsdCPjuK$74ZwNUh8rqFAPZ6+Cmi3tc8A94ueeXTplFqOQKlY4hc=",
"user_permissions": [],
"username": "user8002"
}
},
{
"pk": null,
"model": "spam_and_eggs.userprofile",
"fields": {
"user": ["user8002"],
"language": "",
"email_activated": true
}
}
]
不幸的是,它返回了一个错误:
IntegrityError: Could not load share4you.UserProfile(pk=None): column user_id is not unique
第二个问题来了。我认为它可能会失败,因为 UserProfile 是在使用 Django 的信号创建用户时自动创建的,而夹具失败,因为该用户的 UserProfile 已经创建。这可能是原因吗?有什么方法可以解决吗?
感谢任何建议!
编辑#1:
型号及信号:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
language = models.CharField(max_length=255, null=True, blank=True)
email_activated = models.BooleanField()
@receiver(post_save, sender=User)
def create_profile(instance, created, **kwargs):
if created:
UserProfile.objects.get_or_create(user=instance)
用户模型是django.contrib.auth.models.User
.