【问题标题】:Using django queryset update function with User foreignkey使用带有用户外键的 django 查询集更新功能
【发布时间】:2011-10-29 19:33:19
【问题描述】:

总结:我有一个 mysql 数据库表,其中包含 pdf 对象。当用户打印其中一个时,我希望表格使用时间、日期、打印的布尔值和打印 pdf 对象的用户进行更新。此用户信息应写入当前登录用户的值。当打印 pdf 时,我所有这些当前都在更新,但用户除外。我试过使用 request.user 但这似乎在查询集中不起作用,否则我错过了一些东西。我还尝试使用类似于我定义 get_user 的方法,它允许我手动设置用户,但同样,这不在查询集中自动更新。任何帮助深表感谢!我的 admin.py 文件如下:

from django.contrib import admin
from django.contrib.auth.models import User
from djangostuff.pdf.models import ABC
from django.http import HttpResponse
import datetime, time

class ABCAdmin(admin.ModelAdmin):

    actions = ['print_selected_pdf']

    def get_user(self):
        return '%s'%(self.user.username)

    def create_pdf(self, queryset):
        response = HttpResponse(mimetype="application/pdf")
        response['Content-Disposition'] = 'attachment; filename=form.pdf'
        for obj in queryset:
            response.write(obj.form)
            ABC.objects.filter(pk=obj.pk).update(pdf_printed="1",request_time=time.strftime("%H:%M:%S"),request_date=datetime.datetime.today())
            ABC.objects.filter(pk=obj.pk).update(user=request.user)

        return response


    def print_selected_pdf(self, request, queryset):
        # prints the pdfs for those that are selected,
        # regardless if the pdf_printed field is true or false
        qs = queryset.filter(pdf_printed__exact=0)
        return self.create_pdf(qs)

    print_selected_pdf.short_description = "Print Selected PDF"

    get_user.short_description='Printed By'

    list_display=('form_no',get_user,'request_date','request_time','pdf_printed')


admin.site.register(ABC, ABCAdmin)

【问题讨论】:

    标签: django foreign-keys django-queryset


    【解决方案1】:

    为什么不直接将request 作为参数传递给create_pdf

    def create_pdf(self, request, queryset):
        ...
    
    def print_selected_pdf(self, request, queryset):
        qs = queryset.filter(pdf_printed__exact=0)
        return self.create_pdf(request, qs)
    

    【讨论】:

    • 我知道我只是忽略了一些东西——就是这样。非常感谢!
    猜你喜欢
    • 2018-07-06
    • 2013-02-27
    • 1970-01-01
    • 2015-03-09
    • 2015-01-05
    • 2019-07-14
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    相关资源
    最近更新 更多