Django:没有相关对象的加入

时间:2015-05-22 13:34:32

标签: python sql django

我在django中有两个模型:

class Matching(models.Model):
    representative_remote_id = models.CharField(max_length=200, null=True)
    representative_name = models.CharField(max_length=200)
    representative_group = models.CharField(max_length=200)


class Vote(models.Model):
    representative_name = models.CharField(max_length=200, blank=True, null=True)
    representative_remote_id = models.CharField(max_length=200, blank=True, null=True)
    # ...

如您所见,这两种模型之间没有关系。 我想要的是选择所有选票:

vote.representative_name = CONCAT(matching.mep_name, ' (', matching.mep_group, ')')
AND matching.representative_remote_id IS NULL
AND vote.representative_remote_id IS NOT NULL

我找不到用django做这个的方法(不使用' raw' sql查询)

1 个答案:

答案 0 :(得分:1)

我认为您可以获取所有Matching个对象,并在其上应用过滤器,然后使用该结果获取Vote个对象。

类似的东西:

representative_names = ["{name} ({group})".format(name=field[0], group=field[1]) for field in Matching.objects.filter(representative_remote_id=None).values_list('representative_name', 'representative_group')]
Vote.objects.exclude(representative_remote_id=None).filter(representative_name__in=representative_names)