django - 如何将ForeignKeys的两个模型加入同一个用户?

时间:2011-10-25 16:06:18

标签: django django-models django-views django-queryset

我有多个这样的模型:

class Model1(models.Model):
    user = models.ForeignKey(User)
    model1_filed1 = models.CharField()


class Model2(models.Model):
    user = models.ForeignKey(User)
    model2_filed1 = models.CharField()

....

如您所见,所有模型在每个模型上都有一个user = models.ForeignKey(User)字段,因此当我保存模型数据时,我知道用户保存了它。

在我的项目中,我需要:

  1. 在model1_filed1(Moldel1)上搜索。像查找Model1中包含字符串“foo”的model1_filed1的所有记录。

  2. 一旦我在mode1_filed1上找到包含tring“foo”的Model1记录,就会加入Model2中所有与刚找到的Model1记录具有相同用户ID的记录。

  3. 任何想法?

1 个答案:

答案 0 :(得分:1)

# 1
m1 = Model1.objects.filter(model1_filed1__contains='foo')

# 2
m2 = Model2.objects.filter(user__in=[x.user_id for x in m1])

# or one-liner for # 2, may be heavier for DB than two requests
m2 = Model2.objects.filter(user__model1__model1_filed1__contains='foo')