有必要为用户添加几个字段,在研究了Yandex中关于这个主题的材料后,我编写了自己的实现
class Profile(models.Model):
"""Пользователи"""
user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField("Имя", max_length=100)
surname = models.CharField("Фамилия", max_length=100)
email = models.CharField("Почта", max_length=150)
vk_id = models.CharField("vk_id", max_length=7)
phone = models.CharField("Телефон", max_length=12)
def __str__(self):
return self.name
class Meta():
verbose_name = "Пользователь"
verbose_name_plural = "Пользователи"
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
当我尝试创建新用户(用户)时,配置文件中的任何内容都不会显示在管理面板中,因此我无法更改信息
如果我尝试创建一个新的 Profile 实例,那么它会告诉我......
在这种情况下可以做什么,以便我可以从管理面板编辑用户


当它说Yandex已经研究过时,你是说Django文档吗?这是一个如何内联扩展现有用户模型的示例
添加时的错误与具有此类用户的配置文件显然已经存在这一事实有关,因为关系是 1 对 1 并且已在数据库中添加了唯一性约束。
PS。
__str__,最好明确定义字段列表ModelAdmin.list_display。email在 Profile 和 User 模型中同时在两个地方有一个字段正如该人在对问题的评论中指出的那样:在str函数中,它决定了管理员默认显示的内容。就我而言,str应该返回 self.name 字段,该字段为空。
解决方案选项: