Django启动GraphQL报错:UserType.Meta收到无效auth.User模型如何解决?
报错原因
graphene_django 的 DjangoObjectType 要求 Meta 类下的 model 参数必须传入真实的Django模型类对象,你当前传入的 settings.AUTH_USER_MODEL 是字符串类型的模型路径(值为auth.User),不满足参数要求,因此触发报错。
解决方案
修改你的 schema.py 文件即可,具体调整如下:
- 从
django.contrib.auth导入get_user_model工具方法,该方法会自动读取你的项目配置,返回对应的用户模型类 - 将
UserType下Meta.model的值替换为get_user_model()的调用结果
修改后的完整 schema.py 代码:
from django.conf import settings from django.contrib.auth import get_user_model from graphene_django import DjangoObjectType from Start import models import graphene # Всё заканчивается на type ибо они соответсвуют Graphql class UserType(DjangoObjectType): class Meta: model = get_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
额外注意:你当前 Profile 模型的 __str__ 方法中调用了 self.user.name,如果你使用的是Django默认的auth.User模型,该模型不存在name字段,后续调用时可能触发报错,建议调整为 self.user.username 或者你自定义用户模型中对应的姓名字段。
内容的提问来源于stack exchange,提问作者dim0ntei
相关产品推荐
相关产品推荐

