下面是我的模型序列化器:
class FoodImagesSerializerGet(serializers.ModelSerializer):
current_user = serializers.HiddenField(default=serializers.CurrentUserDefault())
food = serializers.SlugRelatedField(
many=False, read_only=False,slug_field='id', queryset=Food.objects.filter(users=current_user)
)
型号:
class FoodImages(models.Model):
food = models.ForeignKey(Food, related_name='food_images', related_query_name='food_image', on_delete=models.CASCADE, null=True)
class Food(models.Model):
users = models.ManyToManyField(
Profile,
related_name='userfoods',
related_query_name='userfood',
)
我想通过用户来限制序列化器,这样只有食物的用户才能发布图片。我想这样做,就用SlugRelatedField
2条答案
按热度按时间xmakbtuz1#
您可以像这样覆盖SlugRelatedField:
最后,你需要通过序列化器中的上下文传递
request
。这是由GenericViews和ModelViewSets自动处理的,对于基于函数的视图,你可以这样尝试:sqxo8psd2#
这是一个类属性,它不能在运行时访问请求上下文。您必须通过
init
方法访问它