Python 在模型定义中筛选相关模型的问题

Python 在模型定义中筛选相关模型的问题,python,django-models,Python,Django Models,我正在尝试为我的模型编写一些自定义方法,但出现以下错误: 属性错误:“ForeignRelatedObjectsDescriptor”对象没有属性all | filter 当我运行以下代码时会发生这种情况: chore = Chore(name='Laundry') chore.schedule_set.create(week_day='monday', time_due='17:30:00') chore.scheduled() 杂务=杂务(名称=‘洗衣房’) 琐事.日程安排.创建(星期一,到

我正在尝试为我的模型编写一些自定义方法,但出现以下错误:

属性错误:“ForeignRelatedObjectsDescriptor”对象没有属性all | filter

当我运行以下代码时会发生这种情况:

chore = Chore(name='Laundry') chore.schedule_set.create(week_day='monday', time_due='17:30:00') chore.scheduled() 杂务=杂务(名称=‘洗衣房’) 琐事.日程安排.创建(星期一,到期时间17:30:00) 家务活 有没有人对如何使这项工作或我可能缺少什么有任何建议?我查看了Django文档,但它们似乎只涉及模型的最基本用法

models.py:

from django.db import models from datetime import date, timedelta class ChoreManager(models.Manager): def by_day(self, week_day): if week_day == 'today': week_day = date.today().strftime("%A") chores = self.filter(week_day=week_day) if chores.count() > 0: return chores else: return False def today(self): return self.by_day(week_day='today') class Chore(models.Model): chores = ChoreManager() name = models.CharField(max_length=50) notes = models.TextField(null=True) def scheduled(self, week_day=None): if week_day is None: schedule_count = Chore.schedule_set.all().count() else: if week_day == 'today': week_day = date.today().strftime("%A") schedule_count = Chore.schedule_set.filter(week_day=week_day).count() if schedule_count > 0: return True else: return False def times_by_day(self, week_day): if self.scheduled() == True: if week_day == 'today': week_day = date.today().strftime("%A") return Chore.schedule_set.filter(week_day=week_day).values('time_due') else: return False class Schedule(models.Model): chore = models.ForeignKey('Chore') week_day = models.CharField(max_length=9) time_due = models.TimeField() def mark_complete(self): completed_event = Schedule.completedevent_set.create() completed_event.save() def completed_this_week(self): today = date.today() weekstart = today - timedelta(days=today.weekday()) weekend = weekstart + timedelta(days=7, hours=23, minutes=59, seconds=59) if Schedule.completedevent_set.filter(datetime_completed__gte=weekstart, datetime_completed__lte=weekend).count() > 0: return True else: return False class CompletedEvent(models.Model): schedule = models.ForeignKey('Schedule') datetime_completed = models.DateTimeField(auto_now_add=True) 从django.db导入模型 从日期时间导入日期,时间增量 类管理器(models.Manager): def按天(自身、周/日): 如果week_day==“今天”: 星期日=日期。今天().strftime(“%A”) 琐事=自我筛选(周日=周日) 如果chores.count()大于0: 返回家务 其他: 返回错误 今日def(自我): 按天返回自己(星期日=今天) 类杂务(models.Model): 杂务=杂务管理器() name=models.CharField(最大长度=50) notes=models.TextField(null=True) def计划(自身,周/日=无): 如果周日为无: schedule\u count=Chore.schedule\u set.all().count() 其他: 如果week_day==“今天”: 星期日=日期。今天().strftime(“%A”) schedule\u count=Chore.schedule\u set.filter(week\u day=week\u day.count)() 如果计划计数>0: 返回真值 其他: 返回错误 按天计算的def次数(自身、周/日): 如果self.scheduled()==True: 如果week_day==“今天”: 星期日=日期。今天().strftime(“%A”) 返回Chore.schedule\u set.filter(week\u day=week\u day)。值('time\u due') 其他: 返回错误 课程表(models.Model): chore=models.ForeignKey('chore') 周/日=型号.CharField(最大长度=9) 到期时间=models.TimeField() def标记_完成(自): completed_event=Schedule.completedevent_set.create() 已完成\u事件。保存() def本周完成(自我): 今天=日期。今天() weekstart=today-timedelta(days=today.weekday()) 周末=周开始+时间增量(天=7,小时=23,分钟=59,秒=59) 如果Schedule.completedevent\u set.filter(datetime\u completed\u gte=weekstart,datetime\u completed\u lte=weekend)。计数()>0: 返回真值 其他: 返回错误 类CompletedEvent(models.Model): schedule=models.ForeignKey(“schedule”) datetime\u completed=models.DateTimeField(自动\u now\u add=True) 更改:

schedule_count = Chore.schedule_set.all().count()
致:


在所有情况下..

谢谢。当Django模型和Django模型实例之间的区别开始变得模糊时,这个答案在漫长的一天即将结束时是金黄色的。:)
schedule_count = self.schedule_set.all().count()