我需要使用动态构建的过滤器从多个表中检索数据,该过滤器可能使用也可能不使用任何表中的数据。
所以说我有这个:
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 将为ExportTrackingRecord
QuerySet 中的每个生成一个新查询(可能是数千个......)
我对 django 相当陌生,但是有没有合理的方法来强制加入?