我在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查询)
答案 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)