查询ForeignKey的属性并填充

时间:2015-05-20 15:56:54

标签: django

我创建了一个发票系统,我可以在其中为用户分配项目,他们可以查看已分配的项目列表。问题是,我需要显示物品的价格。我无法弄清楚如何开始查询该属性。在我得到观点之前,我觉得一切都很稳固。也许代码可以比我更好地表达我的问题。

## models.py
class Invoice(models.Model):
    date_of_service     = models.DateTimeField(default=datetime.now(),blank=True)
    agency_to_bill      = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True)
    service_compelted   = models.ForeignKey('Service', blank=True)
    paid                = models.CharField(max_length="50", choices=invoicePaid, default='False')

    def __unicode__(self):
        return unicode(self.agency_to_bill)


class Service(models.Model):
    name_of_service = models.CharField(max_length="50")
    cost            = models.CharField(max_length="50")

    def __unicode__(self):
        return unicode(self.name_of_service)


##views.py
def invoicelist(request):
    span = Bill_Period.objects.all() 
    return render_to_response('invoice-list.html', {'span': span})

def InvoiceDetail(request, month, year):
    current_user = request.user.id
    invoice_detail = invoice.objects.filter(date_of_service__year=year, date_of_service__month=month, agency_to_bill=current_user)
    context = {'invoice_detail': invoice_detail}
    return render_to_response('invoice-detail.html', {'invoice_detail': invoice_detail,
                                                        'current_user': current_user})


##invoice-detail.html

    {% for p in invoice_detail %}
    {{ p.therapy_compelted }} {{ <!--PRICE HERE--> }}
    {% endfor %}

1 个答案:

答案 0 :(得分:2)

您可以直接在模板中访问外键元素属性,而无需在视图中使用特定查询。只要您的上下文中包含主要对象(在您的情况下为发票),您就可以访问通过外键相关的元素,就像它是直接属性一样。

不确定您的变量名称,您是在讨论价格,但它不在您的模型中,然后在您的模板中,您有therapy_complete,但在您的模型中,您有service_completed。

但无论如何在模板中访问外键非常容易。像这样:

   {{ p.service_completed.cost }}