"Django, 延期 属性 E"

2024-05-14 13:13:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个名为PortfolioView的列表视图中。我试图检索用户输入到模型中的所有项目,该模型名为“Prospect”。为此,我尝试以下方法:

def get_context_data(self, **kwargs):
    Prospect.objects.all().filter(owner__username=self.request.user)
    context = MakeGraphs(Prospect.psuccess, Prospect.hc_type)
    return super(PortfolioView, self).get_context_data(**context)

但是,当我运行函数MakeGraphs时,我得到一个错误,说操作不能在延迟属性上运行。我不明白为什么它作为延迟属性返回。在

建议?在

编辑:为了清楚起见,下面是我在MakeGraphs函数中所做的近似操作:

^{pr2}$

因此,它接受两个变量的列表,并为每个返回的变量返回一个值。在

编辑2: 使用查询时:

def get_context_data(self, *args, **kwargs):
    a = Prospect.objects.filter(owner=self.request.user).first()

我得到了第一条记录的值,其中owner=user,如预期的那样。但是,我想得到所有的值的psucess和hc_类型。。。在

如果我试试这个:

def get_context_data(self, *args, **kwargs):
    a = Prospect.objects.filter(owner=self.request.user)

我得到一个'QuerySet'对象没有属性'psaccess'错误。。。在

编辑3: 对于返回单个值的属性,或者返回了多个属性,并且可以一次使用一个属性而不是一次使用所有属性,则标记为解决方案的答案将有效。在

但是,如果需要列表形式的每个属性的所有值,则应将此用于查询: yourvar=列表(MyModel.objects.filter(所有者=self.request.user).values\u list('yourvar'))


Tags: self列表dataget属性objectsrequestdef
1条回答
网友
1楼 · 发布于 2024-05-14 13:13:29

您需要有一个Prospect对象实例。模型字段属性是“延迟属性”。在

def get_context_data(self, *args, **kwargs):
    context = super().get_context_data(*args, **kwargs)
    prospect = Prospect.objects.filter(owner__username=self.request.user).first()
    if prospect:
        graphs = MakeGraphs(prospect.psuccess, prospect.hc_type)  # This should return a dict.
        context.update(graphs)
    return context

相关问题 更多 >

    热门问题