【问题标题】:How to retrieve the data using datefield using django?如何使用 django 使用 datefield 检索数据?
【发布时间】:2018-07-31 13:54:39
【问题描述】:

我需要使用 Django 日期字段从数据库中检索数据。尝试使用 Datefield 检索数据。我正在使用 Django 2.0、Bootstrap 4、PostgreSQL。

#forms.py
from django import forms

class StatusReportForm(forms.Form):
    created_date=forms.DateField(widget=forms.TextInput(attrs=
                            {
                                'class':'datepicker'
                            })) 

#views.py
from django.shortcuts import render, get_object_or_404

# Create your views here.
from django.views.generic import DetailView

from .models import Statusreport
from .forms import StatusReportForm

def statusreport(request):
   form = StatusReportForm()
     context = {
         form: form
         }
  return render(request, "statusreport.html", context)

class StatusReportDetailView(DetailView):
    model = Statusreport
    template_name = 'statusreport-detail.html'
    def get_object(self):
        instance = get_object_or_404(Statusreport, slug=self.kwargs['slug'])
     return instance
 #models.py
 class Statusreport(models.Model):

      created_date= models.DateField()
      taskname = models.CharField(max_length=200)
      slug = models.SlugField(null=True, blank=True)
      def __str__(self):
          return self.taskname

      def get_absolute_url(self):
          return reverse('statusreport:statusreport-detail', kwargs={'slug': 
          self.slug})

 def pre_save_statusreport_receiver(instance, *args, **kwargs):
     if not instance.slug:
       instance.slug = instance.created_date
 pre_save.connect(pre_save_statusreport_receiver, sender= Statusreport)

 #statusreport.html

 <main class="container">
   <form>
       <div class="row" style="padding-top: 100px">
           <div class="col">
              <label class = 'control-label' for="date">Select Date: </label>
              <input data-date-format="dd/mm/yyyy" id="datepicker">
            </br>
        </br>
            <a href="#" class="btn btn-info btn-md active" role="button" 
             aria-pressed="true">Get Reports</a>
          </div>
       </div>
     </form>
  </main>
   <script type="text/javascript">
   $('#datepicker').datepicker({
      weekStart: 1,
      daysOfWeekHighlighted: "6,0",
      autoclose: true,
      todayHighlight: true,
  });
  $('#datepicker').datepicker("setDate", new Date());
  </script>

注意:我需要它像从那里单击“获取报告”按钮一样工作,它需要移动到 http://localhost:8000/statusreport/{{created_date}}/

但我无法获得报告。

【问题讨论】:

    标签: django python-3.x postgresql


    【解决方案1】:
       <form method=POST action={% url 'get_posts_from'%}>
           {% csrf_token %}
           <div class="row" style="padding-top: 100px">
               <div class="col">
                  <label class = 'control-label' for="date">Select Date: </label>
                  <input name='date-needed' data-date-format="dd/mm/yyyy" id="datepicker">
                </br>
            </br>
                <a href="#" class="btn btn-info btn-md active" role="button" 
                 aria-pressed="true">Get Reports</a>
              </div>
           </div>
         </form>
    

    首先你必须让你的表单方法发布

    然后您将 action 添加到将管理已发布数据的视图中,这是您的 URL

    然后将csrf_token 添加到表单中

    那么你必须把name#datepicker所以当你去你的视图时

    你会得到request.POST["date"],这是你在表格中选择的日期

    urls.py

    url(r'^(?P<date>\d{4}-\d{2}-\d{2})/$', views.get_posts_from, name='get_posts_from')
    

    然后在视图中

    def get_posts_from(request, date):
        if request.method =="POST":
             date = request.POST['date']
        #here you put your logic the date can be either picked from
        #the post or even trough the URL on his own 
        return HttpResponse("POSTS from",date)
    

    【讨论】:

    • 谢谢@kostadin。但是get_posts_from 我们可以用class StatusReportDetailView 编写,这样我就可以从模型中检索数据。
    【解决方案2】:

    替换这一行

    instance = get_object_or_404(Statusreport, slug=self.kwargs['slug'])
    

    有了这个

    instance = get_object_or_404(Statusreport, created_date=self.kwargs['slug'])

    并将created_date 作为参数传递给 slug

    【讨论】:

    • 嗨@Pankaj 我已经 slug 模型字段,这将与 created_date 相同。所以,这行不通。在单击“获取报告”之后,它只会移动到“详细信息”视图。首先我需要访问“获取报告”~> class StatusReportDetailView
    • 如果您想获取数据的报告列表,您应该使用 ListView,然后从那里使用 StatusReportDetailView,请在点击 Get Reports 时发布错误或日志
    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 2021-12-27
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    相关资源
    最近更新 更多