use*_*803 5 django orm django-models models
class Customer(models.Model):
name = models.CharField(max_length=200)
# ..
class CustomerTicket(models.Model):
customer = models.OneToOneField(Customer)
date = models.DateTimeField(auto_now_add=True)
# ..
Run Code Online (Sandbox Code Playgroud)
我想查询所有客户。并且,如果它在日期范围内有一张票,则为每个客户添加它的票 - 所以只有当它在给定的日期范围内时,我才会获取票对象,否则票字段将为空。
要通过一次查询获取具有相关票证的客户,您可以使用select_related. 要制作复杂的条件,您可以使用Q
from django.db.models import Q
Customer.objects.select_related('customerticket').filter(Q(customerticket__date__range=["2018-04-11", "2018-04-12"]) | Q(customerticket__isnull=True))
Run Code Online (Sandbox Code Playgroud)
这将按客户票日期过滤数据。