0

您好,我正在尝试从我的 mysql 数据库中显示工作订单以显示在电子邮件中。但是有一个问题,因为 work_orders 是我的 Class Invoice manytomany 字段的一部分。这给了我这个错误。

'ManyRelatedManager' object has no attribute 'description'

我不确定问题是什么。这是我的应用程序的某些部分,可能会有所帮助。

#views.py
@login_required
def invoice_mail(request, id=1):
    invoices_list = Invoice.objects.filter(pk=id)
    invoice = get_object_or_404(Invoice, pk=id)
    client = invoices_list[0].client
    invoice_no = invoices_list[0].invoice_no
    date = invoices_list[0].date
    work_orders = invoices_list[0].work_orders
    t = loader.get_template('registration/email.txt')
    c = Context({
    'client': client.company,
    'address':client.address,
    'city': client.city,
    'postcode': client.postcode,
    'email': client.email,
    'date': date,
    'invoice_no': invoice_no,
    'work_orders': work_orders.description,
    })
    send_mail('Welcome to My Project', t.render(c), 'jess@example.com', ['tom@example.com'], fail_silently=False)
    return render_to_response('sent_email.html', locals(), context_instance=RequestContext(request))


email.txt

INVOICE


Bill to:                            INVOICE # {{invoice_no}}
{{client}}                          DATE: {{date}}
{{address}}
{{city}}
{{postcode}}
{{email}}

quantity item Description
              {{work_orders.description}}
4

2 回答 2

2

除非您向经理添加了描述字段,否则该属性不存在(如它所说)。也许你想使用

for order in work_orders.all():
    print order.description

或在模板中

{% for order in work_orders.all }}
    {{ order.description }}
{% endfor %}

也许你需要在上下文中改变它

'work_orders': work_orders
于 2010-11-02T10:13:28.087 回答
1

work_orders不是一个列表。它是您的多对多字段的访问器/ORM 管理器。

要获得实际的工作订单,您需要执行work_orders.all()(或.filter(foo=bar))然后迭代您返回的每个工作订单,以便将它们格式化以包含在电子邮件中

于 2010-11-02T10:13:06.607 回答