首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-rest-framework注释关系

django-rest-framework注释关系
EN

Stack Overflow用户
提问于 2020-10-07 17:59:42
回答 1查看 28关注 0票数 0

我花了很多时间在谷歌上寻找解决方案,但我仍然无法解决我的问题。我有两个表,我感兴趣的是股票模型中与最新日期相关的stock_value。在注解之后如何设置这种关系?

Product表如下所示:

代码语言:javascript
复制
    {
    product_id: 1, 
    'description': 
    'macbook pro', 'brand': 
    'Apple', 
    'supplier': 'Apple'
    }

库存表如下所示:

代码语言:javascript
复制
    {product_id: 1, 'date': '04-07-2020', 'stock-value': 38}
    {product_id: 1, 'date': '05-07-2020', 'stock-value': 34}
    {product_id: 1, 'date': '06-07-2020', 'stock-value': 32}
    {product_id: 1, 'date': '07-07-2020', 'stock-value': 24}

这就是我想要的结果:

代码语言:javascript
复制
    {product_id: 1, ... other_fields, stock_value: 24}

我的代码看起来像这样:

代码语言:javascript
复制
class Product(models.Model):
    supplier_id = models.ForeignKey(Supplier, on_delete=models.CASCADE)
    description = models.CharField(max_length=200)
    brand = models.CharField(max_length=200)


class Stock(models.Model):
    product_id = models.ForeignKey(Product, on_delete=models.CASCADE)
    date = models.DateField(default=timezone.now)
    stock_value = models.BigIntegerField()


class ProductSerializer(serializers.ModelSerializer):
    supplier = serializers.ReadOnlyField(source='supplier_id.supplier')
    date = serializers.DateField()
    stock = serializers.IntegerField()

    class Meta:    
       model = Product
       fields = ('description', 'brand', 'supplier' 'date', 'stock')


class ProductList(generics.ListCreateAPIView):

    def get_queryset(self):
        query = Product.objects.annotate(date=Max('stock__date'))

        return query
EN

回答 1

Stack Overflow用户

发布于 2020-10-07 18:18:57

我没有为您提供完整的解决方案,但也许可以提供一些帮助。

我认为您应该先为Stock model添加一个相关的名称,如下所示。

代码语言:javascript
复制
class Stock(models.Model):
    product_id = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='stock_prices')

然后,要查询这一点,您可以这样做(我不确定如何集成到Django Rest框架中,但我想您会知道的)。

代码语言:javascript
复制
product = Product.objects.get(pk=some_pk)
product.stock_prices.order_by('-date')[0]

也许你也可以看看DRF SerializerMethodField,我认为你应该能够将上面的查询集成到一个MethodField中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64241681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档