【发布时间】:2018-11-04 12:22:56
【问题描述】:
在我的views.py ListView 类中,我试图添加一个公式,该公式使用get_context_data() 方法中的对象中的特定元素。这是我尝试过的。
模型.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
这会引发object does not support indexing 错误。我尝试了几种不同的方法来访问特定的对象元素,但没有运气。我不是要注释(这是绝大多数 SO Q&A),只是使用指定对象字段中的值。
附带说明,如果我将obj 传递到上下文数据中,我可以轻松地迭代到模板中的元素值——所以我知道.get() 方法工作正常——这只是“简单”的数学运算在视图中我无法上班。
我确实找到了 this (model_to_dict()),但它正在将 obj 变成字典 - 我认为这可行,但似乎比我预期的要冗长得多。
【问题讨论】:
标签: python django python-3.x django-views