我有两个Django模型:
class Person(models.Model):
unique_id = models.CharField()
class PersonData(models.Model):
person = models.ForeignKey('Person')
phone = models.CharField()
email = models.CharField()
date = models.DateTimeField()
新的PersonData
对象在其信息发生变化时会被添加,但旧的PersonData
对象会被保留。然后我想要一个过滤器,它将根据与他们相关的最新filter_email = "email@example.com"
filter_phone = "964477425"
qs = Person.objects.all()
if filter_email:
qs = qs.filter(persondata__email__icontains=filter_email)
if filter_phone:
qs = qs.filter(persondata__phone__icontains=filter_phone)
对象的数据来过滤人。
我有以下查询集:
PersonData
但该过滤器会搜索与Person
相关联的每个PersonData
对象。是否可以将此过滤器仅限制为最新的Image.FromFile(file)
对象?
答案 0 :(得分:1)
这是一种流行的查询类型,其中需要针对一个字段的唯一值的最新/最旧条目。
我想说的是,如果你仔细思考其他答案所暗示的内容,你就会明白它们并没有达到目的。
无法在单个 django 查询(GraphAPIError: (#4) Application request limit reached
)中使用所需过滤器获取whole object
。
我知道解决此问题的方法之一是在Note that it is possible to get one field but not all fields, also it is possible to fetch all fields in raw **sql** queries
中使用外键到最新的Person
对象,并在每次PersonData
的新对象时更新它创建
答案 1 :(得分:-2)
因此,您可以尝试查询PersonData
模型:
qs = PersonData.objects.filter()
if filter_email:
qs = PersonData.objects.filter(email__icontains=filter_email)
if filter_phone:
qs = PersonData.objects.filter(phone__icontains=filter_phone)
# Cache Person object and pick the last
qs = qs.select_related('person').last()