Django使用日期选择器按月动态搜索项目

Posted

技术标签:

【中文标题】Django使用日期选择器按月动态搜索项目【英文标题】:Django Dynamically search item by month using datepicker 【发布时间】:2014-08-24 01:28:09 【问题描述】:

我是 Django 的新手。我正在使用 Django 开发一个项目。我的项目与图像相关。在我的项目中,我想添加一个日期选择器,用户可以通过它每月搜索他上传的图像。

例如,如果用户从日期选择器中选择任何一年的一月来查看他上传的图像,他将提供那些在当年一月上传的图像。现在我该如何使用姜戈。为了更方便,我提供了与上传图片相关的模型、表单和视图。

这里是models.py

class Photo(models.Model):
    name = models.CharField(max_length = 100)
    photo = models.ImageField(upload_to = 'photos', blank=False,null=True)
    approved = models.BooleanField(default = False)
    approved_by = models.CharField(max_length = 100)
    user = models.ForeignKey(User)
    uploaded_time = models.DateTimeField('date downloaded',auto_now=True)

views.py

def UserImageUpload(request):


    if request.method == 'POST':
        form = DocumentForm(request.POST,request.FILES)
        if form.is_valid():
            messages.add_message(request, messages.SUCCESS, 'Your Image upload is waiting for Admin approval')

            newdoc = Photo(photo =  request.FILES['photo'],user = request.user,name = request.POST['name'],uploaded_time=datetime.datetime.now())
            newdoc.save()
        else:
            messages.add_message(request, messages.ERROR, 'Something is Missing!')

        else:
            form = DocumentForm()

        uploaded_image = Photo.objects.all()

        return render_to_response('myprofile/user_image_upload.html','uploaded_image':uploaded_image,'form':form,context_instance = RequestContext(request))

和form.py

class DocumentForm(forms.Form):
        name = forms.CharField(label='Name Of Your Image',widget=forms.TextInput(attrs='class' : 'form-control',))
        photo = forms.ImageField(
                      label='Select a file',)

您可以使用任何示例模板来使用日期选择器并显示搜索结果。

【问题讨论】:

其实我这里需要一些例子,我不需要直截了当的答案。如果你有任何,请与我分享。 示例是通过谷歌搜索找到的。你可以从那里开始。挖掘示例而不是在这里要求它们是您的工作。在这里询问示例,您可以在谷歌上找到自己仍然要求其他人为自己做您的工作。请参阅 ***.com/questions/how-to-ask 在第一点 - 搜索和研究。 @Tanweer “我不需要直截了当的答案。”但这就是这个网站的用途;对具体、实用的编程问题给出清晰、详细的答案。 【参考方案1】:

这是一个例子。

验证日期输入的表单:

class PickDateForm(forms.Form):
    date = forms.DateField(widget=forms.DateInput(attrs='class': 'any_custom_class_name'))

查看:

def query_by_month(request):
    if request.method == 'POST':
        form = PickDateForm(request.POST)
        if form.is_valid():
            selected_date= form.cleaned_data['date']    # 'selected_date' is a datetime.date object
            photos = Photo.objects.filter(uploaded_time__year=selected_date.year,
                                          uploaded_time__month=selected_date.month)
            return HttpResponse('Photos: ' + repr(photos))
        else:
            return HttpResponse('Invalid form')
    else:
        form = PickDateForm()
    return render(request, 'pickdate.html', 'form': form)

HTML(使用jQuery datepicker):

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    <script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
    <script>
    $(function() 
        $( ".any_custom_class_name" ).datepicker();
    );
    </script>
</head>
<body>
    <form action="/pick_date/" method="post">
    % csrf_token %
     form 
    <input type="submit" value="Submit" />
    </form>
</body>
</html>

【讨论】:

以上是关于Django使用日期选择器按月动态搜索项目的主要内容,如果未能解决你的问题,请参考以下文章

使用django admin的日期选择器

jQuery Mobile 日期选择器版本问题

按月和日过滤 django 日期时间字段的问题

django中的日期时间选择器不使用forms.py

请问如何设置日历的重复项目呢

Twitter Bootstrap 的 Django 和日期范围选择器组件