Django模型中的属性

时间:2017-03-14 22:45:48

标签: python django properties

我希望使用模型中的属性来改进我在django中的视图。 注释代码工作正常,但当我在模型中添加属性时,模板中有空格

views.py:

        cal_day = {}
        cal_day['day'] = day
        cal_day['day_event'] = False
        cal_day['sports'] = []
        for event in event_list:
            if day >= event.reservation_date.date() and day <= event.reservation_date.date():
                cal_day['day_event'] = True
                hours_week.append(event.reservation_date.time())
                # a = Reservation.objects.get(id=event.id)                    
                # d = dict()
                # d['id'] = a.id
                # d['sport'] = a.sport
                # d['trainer'] = a.trainer
                # d['reservation_date'] = a.reservation_date
                # d['free_space'] = (a.sport.capacity - a.users.count())
                # d['duration'] = a.sport.duration
                # d['time'] = a.reservation_date.time()
                # cal_day['sports'].append(d)
                print(Reservation.reservation_info)
                cal_day['sports'].append(Reservation.reservation_info)

models.py

class Reservation(models.Model):
    sport = models.ForeignKey('Sport')
    trainer = models.ForeignKey('MyUser' ,related_name='Trainer')
    users = models.ManyToManyField('MyUser', blank = True)
    reservation_date = models.DateTimeField(null = True, blank = True)


    @property
    def reservation_info(self):

        d = dict()
        d['id'] = self.id 
        d['sport'] = self.sport
        d['trainer'] = self.trainer
        d['reservation_date'] = self.reservation_date
        d['free_space'] = (self.sport.capacity - self.users.count())
        d['duration'] = self.sport.duration
        d['time'] = self.reservation_date.time()
        return d

    def __str__(self):
        return '{} , {}'.format(self.sport, self.reservation_date)
终端中的

获取打印对象:

如果有人可以帮助理解我做错了什么以及我如何能够改善它,那么我将感激不尽:)

1 个答案:

答案 0 :(得分:0)

您无法通过课程访问该媒体资源。注释代码有效,因为您使用的是实例:

a = Reservation.objects.get(id=event.id)
d = dict()
# ...
d['reservation_date'] = a.reservation_date  # this works!