Authentication 在django restframework和管理面板中将电子邮件定义为PK
我不熟悉Django和Django rest框架 我有两个问题: 1.Django的auth.User带有一个id字段。我更喜欢简单地将电子邮件作为主键,我如何才能做到这一点Authentication 在django restframework和管理面板中将电子邮件定义为PK,authentication,django-rest-framework,Authentication,Django Rest Framework,我不熟悉Django和Django rest框架 我有两个问题: 1.Django的auth.User带有一个id字段。我更喜欢简单地将电子邮件作为主键,我如何才能做到这一点 当我尝试使用管理站点创建新项目时,出现以下错误: (1452,'无法添加或更新子行:外键约束失败(db\u lab\u ratresearchproject\u project,约束researchproject\u proj\u lead\u research\u id\u cdf43d86\u fk\u researc
db\u lab\u rat
researchproject\u project
,约束researchproject\u proj\u lead\u research\u id\u cdf43d86\u fk\u researchp
外键(lead\u research\u id
)引用researchproject\u user
(email
)
我认为管理员面板发送电子邮件而不是id,以便为lead_研究员属性创建项目。你知道如何解决这个问题吗
项目模式:
class Project(models.Model):
name = models.CharField(max_length=200, null=False, default='new project')
study_goal = models.CharField(max_length=3000)
animal_welfare = models.CharField(max_length=3000)
start_date = models.DateField(default=timezone.now().date(), null=False)
d = timezone.timedelta(days=30)
end_date = models.DateField(default=timezone.now().date() + d, null=False)
due_date = models.DateField(default=timezone.now().date() + d, null=False)
is_done = models.BooleanField(default=False)
lead_researcher = models.ForeignKey('auth.User', on_delete=models.CASCADE, related_name='lead_researcher')
participating_researcher = models.ManyToManyField('auth.User', related_name='participating_researcher', null=True)
comments = models.CharField(max_length=3000)
class Meta:
unique_together = (('name', 'start_date'),)
indexes = [
models.Index(fields=['lead_researcher', 'is_done']),
models.Index(fields=['participating_researcher', 'is_done'])
]
任何帮助都将不胜感激!不要覆盖默认主键。这会导致duplicasy错误或大数据库出现问题。如果需要,请使用序列化程序返回ID为的对象或删除其他字段
from rest_framework import serializers
class ProjectSerializer(serializers.ModelSerializer):
class Meta(object):
model = Project
fields = ('name', 'stdy_goal', 'animal_welfare', 'start_date')
此外,在bolean字段上建立索引也不是一种可取的做法。OK!最后我使用了普通django用户,并删除了布尔索引。