Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django SyntaxError:关键字arg之后是非关键字arg_Django_Django Models_Python 2.7 - Fatal编程技术网

Django SyntaxError:关键字arg之后是非关键字arg

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

我正在开发我的第一个Python/Django应用程序,遇到了以下问题:

我的应用程序维护一个使用
日历
模型类和
日历日
模型类实现的预订日历。在预订时,我想查询
日历日
实例,如:

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)