首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django从FK的FK获取内容

Django从FK的FK获取内容
EN

Stack Overflow用户
提问于 2021-01-26 20:36:23
回答 1查看 48关注 0票数 0

我的django项目正面临着麻烦。我有一个三层模型:

model.py

代码语言:javascript
复制
class PLC(models.Model):
    name = models.CharField(max_length=50)


class Measure(models.Model):
    class Meta:
        unique_together = ('PLC', 'address', 'is_bit')
    PLC = models.ForeignKey(PLC, on_delete=models.CASCADE)
    address = models.IntegerField()
    is_bit = models.BooleanField()

class MeasureValue(models.Model):
    measure = models.ForeignKey(Measure, on_delete=models.CASCADE)
    value = models.TextField()

在我的view.py中,我希望能够从plc获取度量值。

代码语言:javascript
复制
class PLCViewSet(viewsets.ModelViewSet):
    queryset = PLC.objects.all()
    serializer_class = PLCSerializer


def measures(request, id):
    plc = PLC.objects.get(id=id)
    measures = Measure.objects.filter(PLC=id)
    values = MeasureValue.objects.filter(measure__PLC=id)

    context = {
        'PLC': plc,
        'MEASURES': measures,
        'VALUES': values
    }

    return render(request, 'measures.html', context)

不幸的是,我无法做出正确的filter() (数据存储在sqlite中)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 21:34:13

你查过prefetch_relatedPrefetch了吗?这将允许您在获取PLC实例时提取相关字段。然后,您可以按以下方式访问它们:

代码语言:javascript
复制
plc = PLC.objects.prefetch_related('measure_set__measurevalue_set').filter(id=id).first()
plc.measure_set.all() # QuerySet of `Measure` that are filtered to the `plc`
for measure in plc.measure_set.all():
    measure.measurevalue_set.all() # QuerySet of `MeasureValue` that are filtered to the `measure` therefore `plc` 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65908913

复制
相关文章

相似问题

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