我正在尝试根据ForeignKey的特定字段的值来过滤Django中的表,该字段是第三张表ForignKey的文件。
class A(models.Model):
user_type = models.CharField(blank=True, max_length=32)
description = models.CharField(blank=True,max_length=512)
class B(models.Model):
user = models.OneToOneField(User, on_delete=models.PROTECT)
name = models.CharField(max_length=32, blank=True)
surname = models.CharField(max_length=32, blank=True)
user_type = models.ForeignKey(A,on_delete=models.SET_NULL, null=True)
class C(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
user_profile = models.ForeignKey(B,on_delete=models.SET_NULL, null=True)
test = models.CharField(blank=False,max_length=512)
这是我希望进行的查询:
我想查询C
并在user_type_id
上找到B
,然后在user_type
上过滤A
值
这样的东西(只是为了显示我想要的东西):
models.C.objects.filter(test="test").filter(B__user_type_id__A__user_type = 1)
最终结果:
我想获取表test="test"
中的C
和表A中的user_type = 1
的所有数据
答案 0 :(得分:2)
由于user_type
模型上的A
字段是CharField
。因此,您无法过滤数字。不过,您可以过滤该user_type
字段的值:
C.objects.filter(test='test', b__user_type__user_type='my_user_type_value')
或者您可以过滤A
对象的主键:
C.objects.filter(test='test', b__user_type_id=1)