【问题标题】:fetching values from two tables based on each table having different conditions in django ORM根据在 django ORM 中具有不同条件的每个表从两个表中获取值
【发布时间】:2019-07-26 14:14:19
【问题描述】:

我有 2 个模型 test1 和 test2。 我想查询 test1 的状态条件和 test2 的进度条件。

类测试1:

iID                     = models.AutoField(primary_key=True)
iEID                    = models.BigIntegerField(_("EID"),default=0)
istatus                 = models.BooleanField(_("Status"),default=0)

类测试2:

iid                     = models.AutoField(primary_key=True)
iEID                    = models.BigIntegerField(_("EID"),default=0)
progress                = models.IntegerField(_("pgs"),blank=True,null=True)

我想查询 test2 模型中的 progess > 7 和 test1 模型中的 isstatus = 1 和两个表的 common fieldiEID

【问题讨论】:

    标签: django django-models orm django-views


    【解决方案1】:

    你可以这样做。

    test1_list = test1.objects.filter(istatus=1).values_list('id','iEID')
    
    test2_queryset = test2.objects.filter(progress__gt=7, iEID__in=[y for x, y in test1_list] )
    
    test1_queryset = test1.objects.filter( iEID__in=test2_queryset.values_list('iEID') , id__in = [x for x, y in test1_list])
    

    现在 test1_querysettest2_queryset 将拥有 progess > 7istatus = 1 和常见 iEID 的对象

    【讨论】:

    • 这可以在 django 中使用一对一的关系吗??
    • one-to-one 关系中,一个表中的一条记录与另一个表中的一条且只有一条记录相关联。例如,具有username, password, email 的内置django auth_user 模型将与另一个userdetail 模型一对一,该模型可以具有该用户的额外信息,例如medical details, identification marks。从我看到你的模型的理解来看,你需要的关系是Many-to-many。当一个表中的多条记录与另一个表中的多条记录相关联时,就会出现many-to-many 关系。
    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2021-10-09
    • 2013-06-01
    相关资源
    最近更新 更多