Выполните проверку публичного/частного пользователя для сериализатора
У меня есть модель User и UserFollow. Автор - это следующий пользователь, Профиль - пользователь, за которым следуют. Сейчас я использую аутентификацию Token для проверки пользователей на несанкционированные запросы. Вот что я хочу включить в проверку, но не знаю, как это сделать:
Псевдокод
if profile.public_profile == true
if attrs['author'].id != self.context['request'].user:
raise ValidationError('Unauthorized Request')
if profile.public_profile == false
if attrs['profile'].id != self.context['request'].user:
raise ValidationError('Unauthorized Request')
Я не знаю, как поместить несколько условий IF в валидацию. Как я могу это сделать?
Models.py
class User(AbstractUser,PermissionsMixin):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
username =models.CharField(max_length=40,unique=True,default='undefinedusername')
public_profile = models.BooleanField(default=True)
class UserFollow(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='following')
profile = models.ForeignKey(User,on_delete=models.CASCADE,related_name='followers')
Serializers.py
class UserFollowSerializer(serializers.ModelSerializer):
class Meta:
model = UserFollow
fields = ('id',"author","profile")
def validate(self, attrs):
attrs = super().validate(attrs)
if attrs['author'].id != self.context['request'].user:
raise ValidationError('Unauthorized Request')
return attrs