【问题标题】:Django how to add value from model into another application's view?Django 如何将模型中的值添加到另一个应用程序的视图中?
【发布时间】:2015-01-31 10:44:03
【问题描述】:

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

  • 文章
  • qr

从文章模型中,我想从第一篇文章中获取一个值“标题”,然后将其放入 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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 2018-07-25
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多