gpt4 book ai didi

python - 在 Django 中使用数据库按日期排序

转载 作者:太空狗 更新时间:2023-10-30 01:51:44 25 4
gpt4 key购买 nike

我有以下 model.py。

from django.db import models

class Address(models.Model):
addr = models.CharField(max_length=150)

def __unicode__(self):
return u'%s' % (self.addr)

class Anniversary(models.Model):
date = models.DateField()

def __unicode__(self):
return u'%s' % (self.date)

class Person(models.Model):
name = models.CharField(max_length=50)
birthday = models.DateField()
anniversary = models.ForeignKey(Anniversary)
address = models.ForeignKey(Address)

def __unicode__(self):
return u'%s %s %s %s' % (self.name, self.birthday, self.anniversary, self.address)

我想将所有条目的内容打印到我的模板中。但按出生日期与当前日期排序。即最近的名字,然后是名字。做这个的最好方式是什么。我应该先对它进行排序,然后将其附加到列表或字典中吗?

任何指针都会很棒。

谢谢,

最佳答案

您可以在模型的元类中添加默认排序,例如

class Person(models.Model):
# fields
class Meta:
ordering = ('anniversary__date',)

然后在你的模板中就很简单了:

<ul>
{% for person in persons %}
<li>{{ person.anniversary.date|date:"M d, Y" }} - {{ person.name }}</li>
{% endfor %}
</ul>

如果您需要在 View 中进行自定义排序(以根据请求对象过滤掉人员):

def myview(request):
context = dict(
persons = Person.objects.exclude(person.id=request.user.id)\
.order_by('anniversary__date')
)
return render_to_response('app/template.html', context)

注意在您的 order_by 参数 order_by('-attr') 之前添加一个减号会反转顺序。

正如@DanielEriksson 提到的,如果您的情况不是假设的,那么您似乎应该简化事情。

关于python - 在 Django 中使用数据库按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15076691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com