У меня есть пользовательская модель через 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)
После этого, когда я создаю сообщение, я получаю ошибку -
Не удалось разрешить URL-адрес для связи с гиперссылкой, используя имя представления «user-detail». Возможно, вам не удалось включить соответствующую модель в API или неправильно настроить атрибут lookup_field
в этом поле.
Как это исправить?