我有一个无法解决的实际问题。我正在尝试按时间订购交易,但是我为订购queryset所做的一切。...无济于事。
这是我的模特
class Transaction(models.Model):
collocDonneur=models.ForeignKey(Person,related_name="collocDonneur",on_delete=models.SET_NULL,null=True, blank=True)
collocReceveur=models.ForeignKey(Person,related_name="collocReceveur",on_delete=models.SET_NULL,null=True, blank=True)
point=models.IntegerField(null=False)
raison=models.TextField(null=True,blank=True)
date=models.DateTimeField(default=timezone.now)
class Meta:
verbose_name="Transaction"
这是我的观点:
def vote(request):
person=Person.objects.all()
transactions=Transaction.objects.all()
transactions.order_by('date')
return render(request,"liste.html",locals())
即使我将'date'替换为'-date',也无济于事,即使我在queryset上执行了reverse()...
如果调用.order_by(..)
,则对给定的查询集进行非排序,您将构造一个新的查询集,它是旧查询集的副本,但其中的项已排序。您可以用类似于字符串的方式来考虑这些:您不能更改字符串,只能复制(修改)字符串。严格来说,您可以更改QuerySet
的状态,但这通常不是一个好主意,通过更改QuerySet
(以及基础.query
)的值,您很有可能将打破某些假设,从而构造无效的查询,或破坏缓存机制。因此,您应该构建一个查询集,如:
def vote(request):
persons = Person.objects.all()
transactions = Transaction.objects.order_by('date')
return render(
request,
'liste.html',
{'persons': persons, 'transactions': transaction}
)
:额外注释
person
是Person
的集合,所以最好将其命名为persons
,而不是person
。locals()
这是一个反模式,因为您不清楚要传递给上下文的内容。例如,如果以后打算优化视图,则可能会误删除一些变量。您还可以轻松地开始传递