- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 SQL 中,有分隔列“年”和“月”,现在基于 jquery 日期时间选择器。我可以从表单中获取格式为 yyyymm 的日期条目,例如 201012。
问题是如何根据django form的日期输入范围来过滤数据库。
以下是views.py的一部分,queryset语句不正确。请帮忙指正。
if form.is_valid():
start_date=form.cleaned_data['start_date'] <---format is like 201012>
end_date=form.cleaned_data['end_date']
queryset=Result.objects.filter(concatenate(year,month)_range=[start_date,end_date]) <!--filter in database)
另一个问题是:
因为它只是 YYYYMM,所以如果我像下面这样定义 start_date,它将与 html 中的日期格式 (YYYYMM) 不匹配。那么我怎样才能改变 models.py。
我试过类似的东西:
start_date=models.DateField(auto_now=False, auto_now_add=False,default=datetime.now().strftime("%m.%Y")) but it is not correct.
模型.py:
start_date=models.DateField(auto_now=False, auto_now_add=False)
end_date=models.DateField(auto_now=False, auto_now_add=False)
表单.py
start_date=forms.DateField(widget=DateInput(),required=False)
end_date=forms.DateField(widget=DateInput(),required=False)
编辑后追溯
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\core\handlers\base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\views\generic\base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\views\generic\base.py" in dispatch
89. return handler(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\views\generic\list.py" in get
159. self.object_list = self.get_queryset()
File "C:\Users\user\Desktop\xxxx\views.py" in get_queryset
90. start_date = datetime.strptime(form.cleaned_data['start_date'], '%Y%m') # format is like 201012
Exception Type: TypeError at /result_list/
Exception Value: must be string, not datetime.date
最佳答案
要使此功能生效,您需要执行几个步骤:
将表单域配置为接受“YYYYMM
”格式的日期。在您的表单类中:
start_date=forms.DateField(widget=DateInput(format='%Y%m'), input_formats=['%Y%m'], required=False)
end_date=forms.DateField(widget=DateInput(format='%Y%m'), input_formats=['%Y%m'], required=False)
这将允许 Django 自动解析您的表单数据并将其正确保存为 datetime
对象。请注意,它将存储为完整日期(默认为每月的第一天)- 您不能使用 DateField
并要求它存储除完整日期以外的任何内容 .
在您的模型中,像这样设置默认值:
start_date=models.DateField(auto_now_add=True)
您必须在 DateField
中存储完整日期,因此只需让它默认为当前日期即可。这仍然会在下面给出正确的结果(假设该月的哪一天对您来说无关紧要)。
您的查询逻辑现在如下所示:
if form.is_valid():
# Convert the form inputs into valid datetime objects
start_date = form.cleaned_data['start_date']
end_date = form.cleaned_data['end_date']
# These are full dates... but we only want to compare month and year, so:
queryset=Result.objects.filter(
start_date__year__gte=start_date.year,
start_date__month__gte=start_date.month,
end_date__year__lte=end_date.year,
end_date__month__lte=end_date.month)
关于python - django- concatenate(year,month)_range=[start_date,end_date] 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33363009/
在OOCalc中,我想使用CONCATENATE函数为A列中的每个字符串添加引号。 所以在单元格 B1 中我想做: =CONCATENATE("\"",A1,"\"") OOCalc 不喜欢这样,或者
我对此进行了编码,当我运行它时,它向我显示一条消息,变量“Number”与其余串联“大于5”之间的“+”中存在问题 这是代码 fun main(args: Array) { print("En
我正在尝试连接多个 dask 数据帧,但这会导致我的所有 RAM 都用完并使我的环境 (Google Colab) 崩溃。 我曾尝试与 Dask 连接,因为我听说 Dask 会对文件进行分区,以便更容
常规语言在串联下是封闭的 - 这可以通过使一种语言的接受状态以 epsilon 过渡到下一种语言的开始状态来证明。 如果我们考虑语言 L = {a^n | n >=0},这种语言是正则的(就是一个*)
有什么方法可以跨多行使用 | 字符串运算符? 使用经典的 CONCATENATE 标记,您可以进行如下分配: CONCATENATE 'A rubber duck is a toy shaped li
我有一个表单,其中包含许多格式为 name="field-1" name="field-2" name="field-3" name="field-4" 等等.... 在表单操作页面上,我希望能够使用
我们如何连接动态工作区的字段?这个想法在下面的代码中: LOOP AT lt_final INTO DATA(ls_final). CONCATENATE ls_final-field1
我需要将符号从 4 位数字扩展到 32 位数字。 我尝试像这样重复 MSB 28 次: assign x={28'b{a[3]},a[3:0]}; 但是,我得到一个错误: Syntax error n
我的数据如下所示: ColumnName PrimaryKey 1 ID Y 2 JOB_NAME N 3 JOB_DES
我试图用 Perl6 连接一个字符串,因此: my $cmd = "databricks jobs --job-id 37 --notebook-params '\{"; put $cmd; $cmd
我是 verilog 的初学者。 几乎所有的连接示例如下。 wire [3:0] result; reg a, b, c, d; result = {a, b, c, d}; 以下也可以吗? wir
我正在尝试在 VHDL 上实现它: a<=(b+c)/16; 这个我试过了,但是synthesis不接受。 signal b,c : std_logic_vector(7 downto 0); s
我很难理解 Verilog 中的以下语法: input [15:0] a; // 16-bit input output [31:0] result; // 32-bit output a
假设我有一个占位符 ph_input = tf.placeholder(dtype=tf.int32, [无, 1]) 和一个向量 h = tf.zeros([1,2], dtype=tf.int32
假设我有 ceylon 字符串列表。 (不一定是 List ;它可以是可迭代对象、序列、数组等)将所有这些字符串连接成一个字符串的最佳方法是什么? 最佳答案 最有效的解决方案是使用静态方法String
这个问题已经有答案了: Why does Java's concat() method not do anything? (6 个回答) 已关闭 8 年前。 我找到了这段代码 public class
似乎预处理器在连接有符号数字的 token 时添加了一个空格。 我试过这个: #define DECL_FL(IE) 1e##IE##f float val[] = { DECL_FL(12)
我正在实现一个基于作者的图书搜索功能。我应该返回一个查询结果,其中包含查询作者撰写的所有书籍。但是,对某些作者姓名的查询可能会返回多个结果(例如,查询“Smith, W”可能会匹配“Smith, We
我正在尝试将多个单元格添加在一起,并且在它们之间,我需要一个 IF 公式。我基本上是根据我拥有的列表制作 HTML 输出,我需要检查列中是否有“事件”或“终止”,并根据该列表选择要使用的 html 类
通常,当您链接到另一个单元格时,您会返回该单元格的内容。 我想做的是这样的: =HYPERLINK(CONCATENATE("=C:/documents/'[",B15,".xls]Sheet 1'!
我是一名优秀的程序员,十分优秀!