我的“aplikacja”django项目中有2个应用程序:
从文章模型中我想从第一篇文章中获取一个值“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
答案 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())