【发布时间】:2013-05-16 15:59:34
【问题描述】:
我需要使用动态构建的过滤器从多个表中检索数据,该过滤器可能使用也可能不使用任何表中的数据。
所以说我有这个:
class Solution(models.Model):
name = models.CharField(max_length=MAX, unique=True)
# Other data
class ExportTrackingRecord(models.Model):
tracked_id = models.IntegerField()
solution = models.ForeignKey(Solution)
# Other data
然后我需要做的其他地方:
def get_data(user_provided_criteria):
etr = ExportTrackingRecord.objects.filter(make_Q_object(user_provided_criteria)).select_related()
for data in etr:
s = data.solution
# do things with data from both tables
据我所知,如果我碰巧过滤了解决方案中的一个字段,django 将执行连接,select_related 获取两个对象。如果我只过滤 ExportTrackingRecord 中的字段,那么将没有连接,django 将为 QuerySet 中的每个 ExportTrackingRecord 生成一个新查询(可能是数千个......)
我对 django 还很陌生,但是有没有一种合理的方法来强制加入?
【问题讨论】:
标签: python sql database django