2016-10-05 38 views
1

models.py从获取的对象访问值?

class Period(CommonInfo): 
    order_value = models.PositiveSmallIntegerField() 
    start_date = models.DateField() 
    end_date = models.DateField() 
    name = models.CharField(max_length=30) 

class LeaseDiscount(CommonInfo): 
    amount = models.DecimalField(max_digits=7, decimal_places=2) 
    amountpayed = models.DecimalField(max_digits=7, decimal_places=2) 
    leaseterm = models.ForeignKey(LeaseTerm) 
    period_date = models.ForeignKey(Period) 

views.py

我想列出所有我有我的租约某些时段的折扣,查询如下:

period = Period.objects.filter(order_value__gte = start, order_value__lte = end).prefetch_related(
     Prefetch(
      "leasediscount_set", 
      queryset=LeaseDiscount.objects.filter(is_active=True, leaseterm = activeterm), 
      to_attr="all_discount" 
     ) 
    ) 

但是当我显示时间的列表中我的模板为all_discount输出[<LeaseDiscount: LeaseDiscount object>]

为什么?我如何访问这个对象的值?一般来说,我是否以正确的方式做事?

UPDATE: 模板

  {% for field1 in data.period%} 


        <td> {{ field1.all_discount }}</td> 
+0

你可以了'__str__'方法添加到'LeaseDiscount'模型,返回任何你想默认显示。参考:https://docs.djangoproject.com/en/1.10/ref/models/instances/#str –

+1

你应该表现出你的模板。一般来说,这只是告诉你,你有一个查询集;你会像平常一样遍历并访问各个项目。 –

回答

5

正如丹尼尔建议,您可以通过objects.filter给出对列表进行迭代:

鉴于:

for data in period: # period is a LeaseDiscount object 
     print data.some_field_name # LeaseDiscount model fields 

或者模板: 首先路过渲染对象/选择render_to_response然后使用这样的:

{% for data in period %} 
    {{ data.some_field_name }} 
{% endfor %} 
+0

谢谢我应该在Perio中创建一个字段来保存这个值? 因为我得到错误 “期间”对象有没有属性“some_field_name” –

+0

我使用:)我自己的名字。我发布它与答案一致。 但是,这个领域应该存在于模型中还是不清楚? –

+0

请使用LeaseDiscount模型/表格的字段名称。例如,我给出了这个名字 - 'some_field_name'。 –