Django如何将模型中的价值添加到另一个应用程序的视图中?

时间:2015-01-31 10:44:04

标签: python django python-2.7 django-models django-views

我的“aplikacja”django项目中有2个应用程序:

  • 文章
  • QR

从文章模型中我想从第一篇文章中获取一个值“title”,然后将其放入qr.views(它为我准备一个pdf文件)

文章模型:

from django.db import models

class Article(models.Model):
        title = models.CharField(max_length=150)
        content = models.TextField(verbose_name="Zawartosc")
        published = models.DateTimeField(verbose_name="Data Publikacji")

如何在qr视图中获得“标题”值? 我想我需要从aplikacja.articles.models导入文章。但是如何在test_qr方法中获得准确的值呢?

from reportlab.pdfgen import canvas
from django.http import HttpResponse
from reportlab.graphics.shapes import Drawing 
from reportlab.graphics.barcode.qr import QrCodeWidget 
from reportlab.graphics import renderPDF
from django.contrib.auth.models import User
from aplikacja.articles.models import article


def test_qr(request):
    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'

    a= map(lambda x: str(x), User.objects.values_list('id', flat=True).order_by('id'))

    p = canvas.Canvas(response)
    p.drawString(10, 800, a[1])

    qrw = QrCodeWidget(a[1]) 
    b = qrw.getBounds()

    w=b[2]-b[0] 
    h=b[3]-b[1] 

    d = Drawing(200,200,transform=[200./w,0,0,200./h,0,0]) 
    d.add(qrw)

    renderPDF.draw(d, p, 1, 1)

    p.showPage()
    p.save()
    return response

1 个答案:

答案 0 :(得分:0)

要获取第一篇文章,请使用first()方法:

article = article.objects.all().order_by('published').first()
title = article.title if article else None

BTW python列表基于零,因此要获取列表的第一个元素,您应该使用a[0]而不是a[1]。但无论如何,我建议您使用相同的first()方法获取第一个用户的id

first_user_id = str(User.objects.values_list('id', flat=True) \
                                .order_by('id').first())