1
我想知道以下是否可能,以及是否有人可以解釋如何。我正在使用Django REST FrameworkDjango:在所有查詢集對象上運行方法
我有一個模型,在該模型中我有一個類叫做產品。產品具有稱爲的方法is_product_safe_for_user。它需要用戶對象和自我(產品)。
model.py
class Product(models.Model):
title = models.CharField(max_length=60, help_text="Title of the product.")
for_age = models.CharField(max_length=2,)
def is_product_safe_for_user(self, user):
if self.for_age > user.age
return "OK"
(忽略上面的語法,它只是給你一個想法)
我想要做的就是運行的方法,對所有查詢集對象,像下面的東西,但我不知道如何...
class ProductListWithAge(generics.ListAPIView):
permission_classes = (permissions.IsAuthenticated,)
model = Product
serializer_class = ProductSerializer
def get_queryset(self):
Product.is_product_safe_for_user(self,user)
# then somehow apply this to my queryset
return Product.objects.filter()
還會有一些時候,我想只在一個對象上運行methoud。
還是應該進入串行器?如果是的話怎麼辦?...
class ProductSerializer(serializers.ModelSerializer):
safe = serializers.Field(Product='is_product_safe_for_user(self,user)')
class Meta:
model = Product
fields = ('id', 'title', 'active', 'safe')
這樣就意味着,如果我打印出的所有產品,我會爲每個item.onlysafeobjects?我怎麼會通過用戶(這是通過我的網址) – Prometheus 2013-02-15 22:48:07
該示例演示如何傳遞用戶。自定義管理器就像整個表格的過濾器。您使用管理器訪問的內容已經過濾。你應該閱讀我鏈接的文檔,以便更好地瞭解管理者是什麼。 – 2013-02-15 22:49:24