简体   繁体   English

从Django中检索的模型对象访问属性

[英]Access attributes from retrieved model object in django

I am trying to access an attribute from a model object that I passed to my class. 我试图从传递给类的模型对象访问属性。 So I have my view doing something like: 因此,我的观点是:

my_events = Event.objects.order_by('start').filter(start__year=year, start__month=month)

and then I pass that to my class like so: 然后像这样将它传递给我的班级:

calendar = EventCalendar(my_events).formatmonth(year, month)

and then here is my class 然后这是我的课

# -*- coding: UTF-8 -*-
from calendar import HTMLCalendar
from datetime import date
from itertools import groupby
from django.utils.html import conditional_escape as esc


class EventCalendar(HTMLCalendar):

    def __init__(self, event):
        super(EventCalendar, self).__init__()
        self.event = self.group_by_day(event)

    def formatday(self, day, weekday):
        if day != 0:
            cssclass = self.cssclasses[weekday]


            if date.today() == date(self.year, self.month, day):
                cssclass += ' today'
            if day in self.event:
                cssclass += ' filled'
                extra_div = ['<div class="event_container"><ul>']
                for event in self.event[day]:
                    extra_div.append('<li>')
                    extra_div.append('<a href="%s">' % event.get_absolute_url())
                    extra_div.append(esc(event.title))
                    extra_div.append('</a></li>')
                extra_div.append('</ul></div>') #END event_container

                #Custom div wrapper
                extra_div.append('<div class="extra_container">')

                #Custom div add_event
                extra_div.append('<div class="add_event">')
                extra_div.append('<a href="#">add event</a>')
                extra_div.append('</div>')

                #Custom div show_day
                extra_div.append('<div class="show_day">')
                extra_div.append('<a href="#">show day</a>')
                extra_div.append('</div>')

                extra_div.append('</div>') #END extra_container

                return self.day_cell(cssclass, '%d %s' % (day, ''.join(extra_div)))

            #Custom div wrapper
            extra_div = ['<div class="extra_container">']

            #Custom div add_event
            extra_div.append('<div class="add_event">')
            extra_div.append('<a href="#">add event</a>')
            extra_div.append('</div>')

            #Custom div show_day
            extra_div.append('<div class="show_day">')
            extra_div.append('<a href="#">show day</a>')
            extra_div.append('</div>')

            extra_div.append('</div>')

            return self.day_cell(cssclass, '%d %s' % (day, ''.join(extra_div)))
        return self.day_cell('noday', '&nbsp;')

    def formatmonth(self, year, month):
        self.year, self.month = year, month
        return super(EventCalendar, self).formatmonth(year, month)

    def group_by_day(self, event):
        event_dict = {}
        start = event.start.day
        end = event.end.day
        return event_dict

    def day_cell(self, cssclass, body):
        return '<td class="%s">%s</td>' % (cssclass, body)

The issue is with the group_by_day(self, event) section in the code. 问题出在代码中的group_by_day(self, event)部分。 I'm trying to retrieve the start and end day of my event. 我正在尝试检索活动的开始和结束日期。 with: 与:

start = event.start.day
end = event.end.day

But when I do that I get and error 但是当我这样做时,我得到了错误

'QuerySet' object has no attribute 'start' 'QuerySet'对象没有属性'start'

Does this mean that when I retrieved the object I only got a reference to it, something like lazy instantiation ? 这是否意味着当我检索对象时,我只能得到对它的引用,类似于惰性实例化? Or am I just trying to access it wrong? 还是我只是尝试访问错误?

sorry if question is trivial, really new to python/django. 很抱歉,如果这个问题很琐碎,对于python / django来说真的很新。 Thanks 谢谢

Event.objects.order_by('start').filter(start__year=year, start__month=month)

Returns a list of matching Event objects. 返回匹配的Event对象的列表。 You then pass this QuerySet list to: 然后,您将此QuerySet列表传递给:

group_by_day(self, event)

Which from your parameter names suggests you think you are passing a single event. 从您的参数名称中可以看出,您认为您正在传递单个事件。 So it doesn't work. 因此它不起作用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Django - 从ModelForm获取模型对象属性 - Django - get model object attributes from ModelForm Django,Python,尝试更改从数据库对象检索到的对象中的字段值/属性。所有调用均不起作用 - Django, Python, trying to change field values / attributes in object retrieved from DB objects.all call, not working Django:从 html 模板访问自定义 model 字段的属性 - Django: access to attributes of custom model field from html template Django:从模板中的表单字段访问相关对象属性? - Django: Access related object attributes from a form field in a template? 返回我的django model object今天被检索的次数 - Return the number of times my django model object was retrieved today 使用 Django 中的中间 model 属性访问字段 - access fields using intermediate model attributes in Django 如何在Django视图中访问外部属性模型 - how to access to foreign attributes model in django views Django:访问传递到DetailView中的单个模型对象以操纵其属性的值 - Django: Access the single model object passed into DetailView for manipulation of its attributes' values 具有动态添加属性的Django模型对象 - Django model object with dynamically added attributes Django-无法从DetailView模型对象访问值 - Django- Unable to access values from DetailView model object
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM