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()