我有三个表users
,blocks
,cars
class User(models.Model):
user_id = models.BigIntegerField(primary_key=True)
is_out = models.CharField(default='N')
birthday = models.DateTimeField()
class Cars(models.Model):
user_id = models.ForeignKey(User, on_delete=models.CASCADE, db_column='user_id', related_name='cars')
title = models.CharField()
sold_out = models.CharField(default='N')
class Blocks(models.Model):
user_id = models.BigIntegerField()
target_user_id = models.ForeignKey(User, on_delete=models.CASCADE, db_column='target_user_id', related_name='blocks')
我要提取满足以下条件的汽车。
is_out='N'
的用户提供汽车sold_out='N'
)target_user_id
列中不存在的用户汽车要获得满足以上条件的汽车,我这样编写查询。
blocks = Blocks.objects.filter(user_id=10000).values_list('target_user_id', flat=True)
Cars.objects.filter(sold_out='N').select_related('user_id').filter(user_id__is_out='N').exclude(user_id__in=blocks)
但是您知道,如果块长大,可能是发生了性能问题。
问题
谢谢。