使用自定义用户模型(DRF)显示作者链接



我有一个通过AbstractBaseUser-的自定义用户模型

class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
first_name = models.CharField(max_length=64)
last_name = models.CharField(max_length=64)
created = models.DateTimeField(default=timezone.now)
image = models.ImageField(upload_to=get_user_dir_path,
default='user_placeholder/user_image_placeholder.png')
points = models.IntegerField(default=0)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name']
objects = CustomUserManager()
def __str__(self):
return self.email

所以,我有了第二个模型Post,在那里我可以看到"作者"归档-

author = models.ForeignKey(CustomUser, on_delete=models.CASCADE)

然后,我创建了PostsViewSet。检查我的序列化程序-

class PostSerializer(serializers.HyperlinkedModelSerializer):
isFan = serializers.SerializerMethodField()
id = serializers.ReadOnlyField()
created = serializers.DateTimeField(format="%Y-%m-%d %H:%M", read_only=True)
author = serializers.HyperlinkedRelatedField(view_name='user-detail', read_only=True)
class Meta:
model = Post
read_only_fields = ('users',)
fields = '__all__'
def get_isFan(self, obj) -> bool:
user = self.context.get('request').user
if user.is_anonymous:
return None
else:
return services.isFan(obj, user)

之后,当我创建一个帖子时,我会出现一个错误-

无法使用视图名称"user-detail"解析超链接关系的URL。您可能未能将相关模型包含在API中,或者在此字段上错误配置了lookup_field属性。

如何修复?

serializers.HyperlinkedRelatedField尝试根据您的URL模式查找特定作者可以检索到的URL API。

您可能错误地配置了urls.py

最新更新