我想要一个公共和私人食谱的列表,隐藏所有私人食谱,除非它是所有者的。我为此创建了一个管理器:
class RecipeManager(models.Manager):
def public_recipes(self, *args, **kwargs):
return super(RecipeManager, self).filter(private=False)
def private_recipes(self, *args, **kwargs):
user = kwargs.pop('user')
return super(RecipeManager, self).filter(private=True, user=user)
class Recipe(models.Model):
name = models.CharField(max_length=100)
recipe = models.CharField(max_length=200)
private = models.BooleanField(default=False)
你知道吗视图.py地址:
class RecipeViewSet(viewsets.ModelViewSet):
queryset = Recipe.objects.all()
serializer_class = RecipeSerializer
permission_classes = (AllowAny,)
你知道吗序列化程序.py地址:
class RecipeSerializer(serializers.ModelSerializer):
class Meta:
model = Recipe
fields = ('id', 'name', 'recipe', 'total_ingredients')
depth = 1
那么,我在哪里可以使用方法public_recipes
,private_recipes
或者有更好的解决方案吗?你知道吗
首先,您可能希望将自定义管理器设置为配方模型的默认管理器,如下所示:
您可以重写视图上的
get_queryset()
方法来合并用户的私有和公共配方:实际上,我建议考虑对公共和私有菜谱使用不同的视图集,即
相关问题 更多 >
编程相关推荐