我创建了一个应用,在这里人们可以将其商品详细信息的“ csv”文件上传到服务器,然后对其执行各种操作。但是,由于每个项目都有其自己的唯一ID,因此每当上载csv时,都无法确定最后一次上载哪个项目批处理。
这是我在views.py中导入Itembatch模型中的数据的功能:
@method_decorator([login_required, teacher_required], name='dispatch')
class UploadedItems(ListView):
model = ItemBatch
ordering = ('name',)
context_object_name = 'quizzes'
template_name = 'classroom/teachers/item_list.html'
def get_queryset (self):
# queryset = self.request.user.uploaded_by
print("----------------" + str(ItemBatch.objects.latest('time')))
return ItemBatch.objects.filter(uploaded_by=self.request.user)
这是模型:
# item upload
class ItemBatch(models.Model):
# uploaded_by = models.ForeignKey(Teacher, on_delete=models.CASCADE, related_name='uploaded_by')
ttypes =(('Open','Open'),('Container','Container'),('Trailer','Trailer'),('All','All'))
uploaded_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='uploaded_by')
name = models.CharField(max_length=30)
pid = models.CharField(max_length=30)
quantity = models.CharField(max_length=30)
length = models.CharField(max_length=100, blank=True)
width = models.CharField(max_length=100, blank=True)
height = models.CharField(max_length=100, blank=True)
volume = models.CharField(max_length=100, blank=True)
weight = models.CharField(max_length=100, blank=True)
truck_type = models.CharField(max_length=255,default=0, choices=ttypes)
origin = models.CharField(max_length=100, blank=True)
destination = models.CharField(max_length=100, blank=True)
time = models.DateTimeField(max_length=100, blank=True,default=now)
def __str__ (self):
return self.name
如您所见,
print("----------------" + str(ItemBatch.objects.latest('time')))
仅打印最新的项目,而不打印我需要的整个批次。我需要一个包含所有具有相同时间字段且最新的项目的查询集。有没有在模型中不使用任何类型的BatchID的方法?
这是我的模型数据库:
如您所见,我想在不同批次的物品之间进行区分/区分。
答案 0 :(得分:1)
对于我从您的问题中可以理解的内容,您可能需要这样做(无需测试)。在settings.py中禁用并启用USE_TZ(如果其为True)。
latest_item = ItemBatch.objects.latest('time')
from django.conf import settings
settings.USE_TZ = False
latest_items = ItemBatch.objects.filter(time__date=latest_item.time.date(), time__hour=latest_item.time.hour, time__minute=latest_item.time.minute)
settings.USE_TZ = True
'latest_items'包含与日期,小时和分钟匹配的所有元素,作为最新的ItemBatch对象。如果需要,也可以添加第二个,但是如果同时添加了许多元素,则可能不起作用。