簡體   English   中英

如何將用戶選擇的 object 傳遞到另一個視圖並從該 object 中檢索特定列?

[英]How can I pass an object selected by the user, to another view and retrieve a specific column from that object?

我試圖找出從用戶正在查看的當前 object 中獲取我的stock_list列中的值的最有效方法。

BucketDetail用於檢索用戶通過item = self.kwargs.get('pk')選擇的特定 object

class BucketDetail(generics.RetrieveAPIView):
    permission_classes = [IsAuthenticated]
    serializer_class = BucketListSerializer
    queryset = Bucket.objects.all()

    def get_object(self, queryset=queryset, **kwargs):
        item = self.kwargs.get('pk')
        return get_object_or_404(Bucket, slug=item)

如何將 object 實例從BucketDetailBucketData視圖,然后從當前 object 實例中獲取列stock_list

class BucketData(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request, *args, **kwargs):
        stocks = Bucket.objects.get(stock_list)
        ...
        data = response.json()
        return Response(data, status=status.HTTP_200_OK)

以上是我到目前為止所擁有的, stocks = Bucket.objects.get(stock_list)不像我想的那樣工作。

models.py

class Bucket(models.Model):

    category_options = (
        ('personal', 'Personal'),
        ('social', 'Social'),
    )


    class BucketObjects(models.Manager):
        def get_queryset(self):
            return super().get_queryset()

    ...
    slug = models.SlugField(unique=True, blank=True) 
    stock_list = ArrayField(models.CharField(max_length=6,null=True),size=30,null=True)
    ...


    objects = models.Manager()
    bucketobjects = BucketObjects()

    class Meta:
        ordering = ('-created',)

    def total_stocks_calc(self):
        self.stock_count = Bucket.objects.aggregate(Sum('stock_list', distinct=True))
        self.save()



您應該使用 model pk 或您獨特的 slug 在您的BucketData視圖中檢索stock_list數據。 您還應該對數據使用序列化程序。 將您的 slug 或 pk 從 urls 文件傳遞到您的視圖。 嘗試這樣的事情(代碼未經測試,可以改進):

序列化器:

class StockListSerializer(ModelSerializer):
    stock_list = serializers.ListField(child=serializers.CharField())

    class Meta:
        model = Bucket
        fields = ("stock_list",)

看法:

class BucketData(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request, *args, **kwargs):
        slug = kwargs.get("slug")
        bucket_object = get_object_or_404(Bucket, slug=slug)
        serialzer = StockListSerializer(bucket_object.stock_list)
        return Response(serialzer.data, status=status.HTTP_200_OK)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM