python - 在两个日期之间查找模型的对象实例
问题描述
我想要我的购买项目的记录。当我在购买模型中添加购买项目时,该数据显示在我的另一个应用程序记录中,日期时间字段开始日期到结束日期。如果我们添加这两个日期,我们在这些日期之间购买的所有购买数据都会显示在记录中。所以请帮助我。谢谢你。
下面的代码是我的项目应用名称购买,型号名称是购买报告。
from django.db import models
from stock.models import *
class PurchaseReport(models.Model):
product_name = models.CharField(max_length=100, blank=False)
quantity = models.IntegerField()
price = models.DecimalField(max_digits=12, decimal_places=2)
#status = models.CharField(max_length=10, default='Purchased')
def save(self):
if not self.pk:
Stock.objects.create(product_name=self.product_name, quantity=self.quantity, price=self.price)
super().save()
def __str__(self):
return 'Product name:{0} Quantity:{1} Price:{2}'.format(self.product_name, self.quantity, self.price)
class Meta:
ordering = ['product_name']
这是我的应用购买views.py
from django.shortcuts import render,redirect,get_object_or_404
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import *
from stock.models import *
from .forms import *
def display_purchase_report(request):
items_list = PurchaseReport.objects.all()
query = request.GET.get("q")
if query:
items_list = items_list.filter(product_name__icontains=query)
paginator = Paginator(items_list, 5)
page = request.GET.get('page')
try:
items = paginator.page(page)
except PageNotAnInteger:
items = paginator.page(1)
except EmptyPage:
items = paginator.page(paginator.num_pages)
context = {
'object_list': items,
'items': items_list,
'header': 'PURCHASED ITEMS'
}
return render(request, 'index3.html', context)
def add_purchase_report(request):
if request.method == "POST":
form = PurchaseReportForm(request.POST)
if form.is_valid():
form.save()
return redirect('display_purchase_report')
else:
form = PurchaseReportForm()
return render(request, 'add_new3.html', {'form': form})
接下来是另一个应用记录,型号名称是 Records。
from django.db import models
from purchase_report.models import *
class Records(models.Model):
start_date = models.DateTimeField(null=True)
end_date = models.DateTimeField(null=True)
def __str__(self):
return 'Start Date:{0} End Date:{1}' .format(self.start_date, self.end_date)
解决方案
问题您可以将日期设置为购买,然后在日期范围内过滤它们
class PurchaseReport(models.Model):
product_name = models.CharField(max_length=100, blank=False)
quantity = models.IntegerField()
price = models.DecimalField(max_digits=12, decimal_places=2)
date = models.DateTimeField(null=True)
然后也许做一个def make_purchase
#just hook the date today to the purchase when create new
def make_purchase(request):
purchase = Purchase.object.create(
product_name = request['product_name'],
quantity = request['quantity'],
price = request['price'],
date = date.today()
)
purchase.save()
def display_purchase_report(request):
report = Purchases.objects.filter(date__range=["2018-10-01", "2011-11-1"])
context = {'reports':report}
return render(request, 'index3.html', context)
然后在模板中这样做:
{% for record in records %}
{{ record.product_name }}
{{ record.quantity }}
{% endfor %}
推荐阅读
- android - 如何使用带有 onSwiped 的 FirebaseRecyclerAdapter 从 recyclerview 和数据库中删除项目?
- reactjs - 使用 heremap 多次拾取和多次放置 api 遇到问题
- python - 在 Python 中使用 json.dump 将“漂亮”的 JSON 对象保存到光盘
- ruby-on-rails - Rails未定义的局部变量或常量内的方法
- php - 为什么我的 mySql 代码需要很长时间才能执行?
- database - 如何使用 sequelize 和 nodejs 在 sqlite3 中设计无穷大?
- python - 旋转 Pyspark DataFrame 以获取 MultiColumn
- azure - 路由到 Azure Front Door 后面的多个 Web 应用
- python - 更改字符串值
- node.js - 数据未加载到前端