gpt4 book ai didi

mysql - Django - 在第三张表上过滤外键

转载 作者:行者123 更新时间:2023-11-29 05:47:46 25 4
gpt4 key购买 nike

我正在尝试根据 ForeignKey 的特定字段的值过滤 Django 中的表,该 ForeignKey 是第三个表 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 上查询并在 B 上找到 user_type_id 然后在 上过滤 user_type 值一个像这样的东西(只是为了展示我想要的):

models.C.objects.filter(test="test").filter(B__user_type_id__A__user_type = 1)

最终结果:
我想获取表 C 中的 test="test" 和表 A 中的 user_type = 1

的所有数据

最佳答案

由于 A 模型中的 user_type 字段是 CharField。所以你不能过滤一个数字。但是,您可以过滤该 user_type 字段的值:

C.objects.filter(<b>test='test', b__user_type__user_type='my_user_type_value'</b>)

或者您可以过滤 A 对象的主键:

C.objects.filter(<b>test='test', b__user_type_id=<i>1</i></b>)

关于mysql - Django - 在第三张表上过滤外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58058225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com