我有多个这样的模型:
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)
字段,因此当我保存模型数据时,我知道用户保存了它。
在我的项目中,我需要:
在model1_filed1(Moldel1)上搜索。像查找Model1中包含字符串“foo”的model1_filed1的所有记录。
一旦我在mode1_filed1上找到包含tring“foo”的Model1记录,就会加入Model2中所有与刚找到的Model1记录具有相同用户ID的记录。
任何想法?
答案 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')