当前位置: 首页 > 知识库问答 >
问题:

Django 列表视图 settting 变量到模型实例元素

朱保赫
2023-03-14

在ListView的< code>views.py类中,我尝试添加一个公式,该公式使用< code>get_context_data()方法中某个对象的特定元素。以下是我尝试过的。

Models.py

Class MyModel(models.Model):
    foo = models.FloatField()
    bar = models.FloatField()

views.py

class MyView(generic.ListView):

    template_name = "my_item_list.html"
    model = MyModel

    def get_context_data(self, **kwargs):

        obj = MyModel.objects.get(pk=this_object_id)

        var_a = obj['foo']
        var_b = obj['bar']
        result = var_a * var_b

        context = {
            'result': result,
        }

        return context

这将引发对象不支持索引错误。我已经尝试了几种不同的方法来访问特定的对象元素,但没有运气。我不是在试图注释(这是SO Q的绝大多数)

作为补充说明,如果我将obj传递到上下文数据中,我可以轻松迭代到模板中的元素值-因此我知道。get()方法工作正常-这只是视图中的“简单”数学,我无法使用。

我确实找到了这个(model_to_dict()),但它正在将obj变成字典 - 我认为这可以工作,但似乎比我预期的要多得多。

共有1个答案

栾和玉
2023-03-14

你应该使用属性,对象是模型类的实例而不是字典

    var_a = obj.foo
    var_b = obj.bar
    result = var_a * var_b

最好是在模型的声明中创建属性:

Class MyModel(models.Model):
    foo = models.FloatField()
    bar = models.FloatField()

    @property
    def multiply_fb(self):
        return self.foo * self.bar

并且在视图中:

class MyView(generic.ListView):

    template_name = "my_item_list.html"
    model = MyModel

    def get_context_data(self, **kwargs):

        obj = MyModel.objects.get(pk=this_object_id)
        context = {
            'result': obj.multiply_fb,
        }
        return context
 类似资料:
  • 问题内容: 这是一个相当基本的问题(我是Django的新手),但是在模板的视图中使用变量集时遇到了麻烦。如果我在视图内初始化字符串或列表(即h =“ hello”),然后尝试在模板内调用它: 既没有输出也没有错误。同样,如果我尝试在模板中使用不存在的变量: 再次没有错误报告。这正常吗?以及如何在模板中使用变量。谢谢! 问题答案: 为了能够访问模板中的变量,它必须位于用于渲染该模板的上下文中。我的猜

  • 我有Gammer模型,即用户扩展和竞争模型。很多用户可以参加一场比赛,而一场比赛可以有很多用户(很多) 插件管理。py: 管理员可以查看球员比赛(用户)或为他们分配能力 现在我希望玩家(用户)可以注册比赛(选择比赛)。我如何继续?

  • 我有类似于这个问题用例 我想检查什么类型的实例变量存储在参数中而不引发异常 我想做的是这样的事情 我如何改变这个实现,使它允许我窥视什么类型的参数是持有的 谢谢你的回答,还有几点 我是C++11所以不能使用variant或any 有没有标准的方法。我想要的是一个实例变量的类,可以是多种类型(有界的),并在阅读它时,检查它是什么类型

  • 问题内容: 关于如何序列化模型QuerySet的文档很多,但是如何将模型实例的字段序列化为JSON? 问题答案: 您可以轻松地使用列表来包装所需的对象,这就是Django序列化程序正确序列化它所需要的,例如:

  • 问题内容: 我正在寻找一种以图形方式表示Django项目模型的方法。 有没有一种“本机”方式来进行这种ERD(图表)? 按照@Etienne说明进行更新 这是一个示例,说明了我如何最终查看代表django项目某些模型的PDF 它实际上与我的应用程序(app1,app2,…)一起生成点数据 将结果传递到dot以PDF格式输出 用打开输出 evince 问题答案: 如果要从Django模型中提取UML

  • 我正在尝试开发一款android应用程序,具有回收视图。所以我创建了一个项目视图、一个模型类和适配器。在在viewHolder方法内部初始化,在初始化变量时显示错误,我无法找出下面这段代码的错误。 下面是item_view_model的代码。xml 下面是ModelClass的代码。JAVA 下面是**适配器的代码。爪哇** 如何解决这个问题??