Django SyntaxError:关键字arg之后是非关键字arg
我正在开发我的第一个Python/Django应用程序,遇到了以下问题: 我的应用程序维护一个使用Django SyntaxError:关键字arg之后是非关键字arg,django,django-models,python-2.7,Django,Django Models,Python 2.7,我正在开发我的第一个Python/Django应用程序,遇到了以下问题: 我的应用程序维护一个使用日历模型类和日历日模型类实现的预订日历。在预订时,我想查询日历日实例,如: dates = CalendarDay.objects.filter(calendar = booking.calendar, calendar_date >= booking.arrival_date, calendar_date <= booking.departure_date) 我收到一个字段错误:Dj
日历
模型类和日历日
模型类实现的预订日历。在预订时,我想查询日历日
实例,如:
dates = CalendarDay.objects.filter(calendar = booking.calendar, calendar_date >= booking.arrival_date, calendar_date <= booking.departure_date)
我收到一个字段错误:Django不允许在“日历日期”字段加入
我已经通过Django文档完成了我的工作,但是——显然——我遗漏了一些东西。我做错了什么
编辑:
我最终得到了以下解决方案:
dates = CalendarDay.objects.filter(calendar = booking.calendar, calendar_date__range = [self.arrival_date, self.departure_date])
ge和le无效,请使用lt(低于)或gt(大于)或gte(大于等于)和lte(小于等于)
(当您创建le-Django试图在名为“le”的字段上运行sql连接时,但没有一个字段,因此会出现错误)
ge和le无效,请使用lt(低于)或gt(大于)或gte(大于等于)和lte(小于等于)
(当您尝试在名为“le”的字段上运行sql join时,如果没有,则会出现错误)
dates = CalendarDay.objects.filter(calendar = booking.calendar, calendar_date >= booking.arrival_date, calendar_date <= booking.departure_date)
SQL联接在字段“le”和“ge”上运行,但它们不在那里。因此,您会得到FieldError:不允许在字段“calendar\u date”上联接
您应该使用gte
或lte
,分别表示大于或等于和小于或等于
所以你的代码应该是
dates = CalendarDay.objects.filter(calendar = booking.calendar, calendar_date__gte = booking.arrival_date, calendar_date__lte = booking.departure_date)
第一次尝试
dates = CalendarDay.objects.filter(calendar = booking.calendar, calendar_date >= booking.arrival_date, calendar_date <= booking.departure_date)
SQL联接在字段“le”和“ge”上运行,但它们不在那里。因此,您会得到FieldError:不允许在字段“calendar\u date”上联接
您应该使用gte
或lte
,分别表示大于或等于和小于或等于
所以你的代码应该是
dates = CalendarDay.objects.filter(calendar = booking.calendar, calendar_date__gte = booking.arrival_date, calendar_date__lte = booking.departure_date)
django文档在哪里声明第一个语法是有效的?因为这对我来说似乎不太可能。语法calendar\u date>=booking.arrival\u data
最终计算为True
或False
,如果这两个变量都已知,则将布尔值传递给该函数,而不使用关键字。@KillianDS:是的,你是对的。我重新阅读了文档,但它没有…django文档在哪里声明第一个语法是有效的?因为这对我来说似乎不太可能。语法calendar\u date>=booking.arrival\u data
最终计算为True
或False
,如果这两个变量都已知,则将布尔值传递给该函数,而不使用关键字。@KillianDS:是的,你是对的。我重读了文件,但没有。。。
dates = CalendarDay.objects.filter(calendar = booking.calendar, calendar_date__gte = booking.arrival_date, calendar_date__lte = booking.departure_date)