【问题标题】:Property in Django ModelDjango 模型中的属性
【发布时间】:2017-08-05 11:53:39
【问题描述】:

我想使用模型中的属性改善我在 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)

在终端中获取打印对象:

如果有人可以帮助理解我做错了什么以及如何改进它以更好地分叉,我将不胜感激:)

【问题讨论】:

  • 有问题,嗯?听起来很可怕。
  • 不错的技巧,因为标题上不允许使用“问题”一词
  • 您似乎没有打印实例属性,而是打印第一类。

标签: python django properties


【解决方案1】:

您无法使用该类访问该属性。注释代码有效,因为您使用的是实例:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 2016-03-17
    • 2012-06-16
    • 2017-08-15
    • 2015-10-24
    • 2018-12-12
    • 1970-01-01
    相关资源
    最近更新 更多