【发布时间】:2019-10-17 03:58:52
【问题描述】:
我有一个名为“用户配置文件”的模型,它是一个自定义用户,它接受一个 OneToOneField 中的用户,并且还有其他字段,例如“年龄”、“is_teacher”、“is_location”。
我的问题是,当我创建普通用户时,此“用户配置文件”不会创建新用户。我该如何做到这一点?
我知道我必须用接收器做这样的事情(我在哪里添加接收器?):
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=User)
def create_user_data(sender, update_fields, created, instance, **kwargs):
if created:
# Create your user data
pass
这些是我的模型:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
age = models.IntegerField(default=18)
description = models.CharField(max_length=300)
is_student = models.BooleanField(default=False)
is_teacher = models.BooleanField(default=False)
def __str__(self):
return self.user.username
【问题讨论】:
-
你是如何创建你的“普通用户”的?
-
通过 createsuperuser 或通过 django admin
-
我不确定你是否已经这样做了,这是否能解决你的问题,但你应该把它放到你的
settings.py:AUTH_USER_MODEL = 'yourapp.UserProfile'另外,而不是使用FK 我会将用户模型扩展到您的模型并添加您需要的字段。 -
@HigorRossato 不,这不是自定义用户模型,而是个人资料数据的相关模型。
标签: django django-models django-rest-framework django-authentication django-custom-user