我对 django 框架中关于 django 中的related_name 和related_query_name的代码有问题。请django高手解释django中的related_name,代码如下:
相关名称='+'
Django Rest 框架抛出:
\n\n\n\n\ndjango.core.exceptions.ImproperlyConfigured:无法使用视图名称“customuser-detail”解析超链接关系的 URL。您可能未能在 API 中包含相关模型,或者错误配置了
\nlookup_field该字段的属性。
当我尝试覆盖 get_queryset时时。\n我的用户序列化器:
\n\n\nclass UserSerializer(serializers.HyperlinkedModelSerializer):\n """\n Represent User Serializer class.\n """\n teacher_account = TeacherSerializer(required=False)\n student_account = StudentSerializer(required=False)\n\n account_type = serializers.IntegerField(required=True)\n\n class Meta:\n model = CustomUser\n fields = [\'url\', \'username\', "password", \'email\', \'first_name\', \'last_name\', "account_type", \'teacher_account\', \'student_account\']\n\n email_validator = UniqueValidator(queryset=CustomUser.objects.all(), message="A user with that email already exists.")\n\n extra_kwargs = {\n "password": {"write_only": True},\n "email": {"required": True, "validators": [email_validator]}\n }\n\n @staticmethod\n def setup_eager_loading(queryset):\n queryset = queryset.select_related(\'teacher_account\', \'student_account\')\n …Run Code Online (Sandbox Code Playgroud) 因此,我是Django的新手。尽管我的代码在遵循Django文档“在Django中自定义身份验证”后可以工作,但我不知道示例中的self.model(...)实际如何工作,它的来源以及如何与'自'。
这是在文档底部找到的示例。
from django.db import models
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser
)
class MyUserManager(BaseUserManager):
def create_user(self, email, date_of_birth, password=None):
"""
Creates and saves a User with the given email, date of
birth and password.
"""
if not email:
raise ValueError('Users must have an email address')
-> user = self.model(
email=self.normalize_email(email),
date_of_birth=date_of_birth,
)
user.set_password(password)
user.save(using=self._db)
return user
...
Run Code Online (Sandbox Code Playgroud) python authentication django django-authentication django-users
我有一个自定义用户模型和用户配置文件模型。
class User(AbstractUser):
"""Custom User authentication class to use email as username"""
username = None
email = models.EmailField(verbose_name='email', max_length=255, unique=True,
error_messages={
'unique': _(
"A user is already registered with this email address"),
}, )
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
def __str__(self):
return self.email
class UserProfile(models.Model):
user = models.OneToOneField(User, to_field='email', on_delete=models.CASCADE)
emp_id = models.CharField(max_length=20, blank=False, default='0', null=False)
department = models.CharField(max_length=50, blank=True, default='', null=True)
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个序列化器,将这两个模型结合起来,生成一个嵌套的 JSON。
例如:
{
"email":"user@gmail.com",
"is_active":true,
"profile":
{
"emp_id":2,
"department":2
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我试图做的
class …Run Code Online (Sandbox Code Playgroud)