模型定义中过滤相关模型的问题
Posted
技术标签:
【中文标题】模型定义中过滤相关模型的问题【英文标题】:An issue filtering related models inside the model definition 【发布时间】:2011-06-04 10:10:42 【问题描述】:我正在尝试为我的模型编写一些自定义方法,但出现以下错误:
Attribute Error: 'ForeignRelatedObjectsDescriptor' object has no attribute all|filter
当我运行这段代码时会发生这种情况:
家务=家务(名称='洗衣') chore.schedule_set.create(week_day='星期一', time_due='17:30:00') 家务。计划()有人对如何完成这项工作或我可能遗漏的内容有任何建议吗?我检查了 Django 文档,但它们似乎只涵盖了模型的最基本用途。
models.py:
从 django.db 导入模型 从 datetime 导入日期,timedelta 类 ChoreManager(models.Manager): def by_day(self, week_day): 如果 week_day == '今天': week_day = date.today().strftime("%A") 家务 = self.filter(week_day=week_day) 如果家务.count() > 0: 返回家务 别的: 返回假 今天的定义(自己): 返回 self.by_day(week_day='今天') 类杂务(模型。模型): 家务 = ChoreManager() 名称 = models.CharField(max_length=50) 注释 = models.TextField(null=True) def 计划(自我,week_day=None): 如果 week_day 为无: schedule_count = Chore.schedule_set.all().count() 别的: 如果 week_day == '今天': week_day = date.today().strftime("%A") schedule_count = Chore.schedule_set.filter(week_day=week_day).count() 如果 schedule_count > 0: 返回真 别的: 返回假 def times_by_day(self, week_day): 如果 self.scheduled() == True: 如果 week_day == '今天': week_day = date.today().strftime("%A") return Chore.schedule_set.filter(week_day=week_day).values('time_due') 别的: 返回假 课程表(models.Model): 家务=models.ForeignKey('家务') week_day = models.CharField(max_length=9) time_due = 模型.TimeField() def mark_complete(self): completed_event = Schedule.completedevent_set.create() 完成事件.save() def completed_this_week(self): 今天 = date.today() weekstart = 今天 - timedelta(days=today.weekday()) 周末 = weekstart + timedelta(天=7,小时=23,分钟=59,秒=59) 如果 Schedule.completedevent_set.filter(datetime_completed__gte=weekstart, datetime_completed__lte=weekend).count() > 0: 返回真 别的: 返回假 类 CompletedEvent(models.Model): schedule = models.ForeignKey('Schedule') datetime_completed = models.DateTimeField(auto_now_add=True)【问题讨论】:
【参考方案1】:改变:
schedule_count = Chore.schedule_set.all().count()
到:
schedule_count = self.schedule_set.all().count()
在所有事件中..
【讨论】:
谢谢。当 Django 模型和 Django 模型实例之间的区别开始变得模糊时,这个答案在漫长的一天即将结束时是黄金。 :)以上是关于模型定义中过滤相关模型的问题的主要内容,如果未能解决你的问题,请参考以下文章