【问题标题】:Django - ImportError at /graphqlDjango - /graphql 处的 ImportError
【发布时间】:2021-10-01 16:02:22
【问题描述】:

好吧,我尝试在 Django 的本地服务器上启动 GraphQL。但是有一个错误:

You need to pass a valid Django Model in UserType.Meta, received "auth.User".

异常值为:

Exception Value:    
You need to pass a valid Django Model in UserType.Meta, received "auth.User".

说实话,我真的不明白在哪里可以找到 'UserType.Meta.关于用户的模型看起来像(models.py):

# user - связь с пользователем один-к-одному
# website - юрл, по которому можно больше узнать о пользователе
# bio - о себе (Капитан Очевидность)
class Profile(models.Model):
    user = models.OneToOneField(
        settings.AUTH_USER_MODEL,
        on_delete=models.PROTECT,
    )
    website = models.URLField(blank=True)
    bio = models.CharField(max_length=240, blank=True)

    # __str__ - более удобное отобажение в админке
    def __str__(self):
        return self.user.name

'schema.py' 看起来像:

from django.conf import settings
from graphene_django import DjangoObjectType
from Start import models
import graphene


# Всё заканчивается на type ибо они соответсвуют Graphql

class UserType(DjangoObjectType):
    class Meta:
        model = settings.AUTH_USER_MODEL


class AuthorType(DjangoObjectType):
    class Meta:
        model = models.Profile


class FileType(DjangoObjectType):
    class Meta:
        model = models.File


class TagType(DjangoObjectType):
    class Meta:
        model = models.Tag

那么,我该怎么做才能解决这个问题呢?

【问题讨论】:

  • 能否也包含您的 GraphQL 代码?
  • @ettanany,是的,当然。已经完成了

标签: python django django-models graphql


【解决方案1】:

这是因为 settings.AUTH_USER_MODEL 返回字符串 "auth.User" 而不是模型 User。以下应该可以解决您的问题:

from django.contrib.auth import get_user_model

User = get_user_model()

 
class UserType(DjangoObjectType):
    class Meta:
        model = User

您也可以直接从django.contrib.auth.models 导入User,但首选get_user_model(),因为它也适用于您在设置文件中使用自定义身份验证模型。

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 2012-10-31
    • 2016-07-14
    • 1970-01-01
    • 2018-10-26
    • 2023-03-03
    • 2014-03-31
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多