python-外键Django管理员的日期范围列表过滤器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-外键Django管理员的日期范围列表过滤器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1575字,纯文字阅读大概需要3分钟。
内容图文
![python-外键Django管理员的日期范围列表过滤器](/upload/InfoBanner/zyjiaocheng/681/3038811a3d87414da19d0525c6ed853f.jpg)
我有这样的模特
class BaseRequest(models.Model):
created = models.DateTimeField(auto_now_add=True, editable=False)
modified = models.DateTimeField(auto_now=True, editable=False)
price_quoted = models.DecimalField(max_digits=10, decimal_places=2,null=True, blank=True)
class RequestLeg(models.Model):
created = models.DateTimeField(auto_now_add=True, editable=False)
modified = models.DateTimeField(auto_now=True, editable=False)
depart_date = models.DateField()
num_seats = models.IntegerField()
class Request(BaseRequest):
owner = models.ForeignKey(User, null=True, blank=True)
name = models.CharField(max_length=30, null=True, blank=True)
email = models.EmailField()
phone = models.CharField(max_length=30, null=True, blank=True)
legs = models.ManyToManyField(RequestLeg)
和上述请求模型的管理员是
class RequestAdmin(NoDeletionsAdmin):
list_display=['id', 'created', 'name', 'depart_date']
def depart_date(self, obj):
try:
return min([leg.depart_date for leg in obj.legs.all()])
except ValueError, e:
return None
我想在RequestAdmin中使用depart_date的Daterangelist过滤器?
解决方法:
就像任何其他关系一样,使用field lookups对其进行过滤:
Request.objects.filter(legs__created__range=["2015-01-01", "2016-01-31"])
如果需要从父模型中筛选字段,建议阅读Multi-table inheritance.
一个TL; DR就是Django在子模型上隐式创建一个OneToOneField,我们可以像过滤其他任何字段一样对其进行过滤,例如:
BaseRequest.objects.filter(request__depart_date__range=[...])
要么
Request.objects.filter(baserequest_ptr__created__range=[...])
但是,通常最好这样编写第二个查询,让Django处理内部信息:
Request.objects.filter(created__range=[...])
内容总结
以上是互联网集市为您收集整理的python-外键Django管理员的日期范围列表过滤器全部内容,希望文章能够帮你解决python-外键Django管理员的日期范围列表过滤器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。