为了账号安全,请及时绑定邮箱和手机立即绑定

Django查询从表中选择X,其中Y = Z

Django查询从表中选择X,其中Y = Z

潇湘沐 2021-10-26 18:49:21
我还很难清楚地理解 Django 进行查询的方式。我有两个表:表一:+----+-----+----+| id |code |name|+----+-----+----+表 B:+----+----+| id |name|+----+----+的值name这两个表的可以等于(或不)。我需要做的是code通过比较两个表的值来获取表 A 列的值,name如果表 B 与任何行中的表 A 匹配。例子:表一:+----+----+----+| id |code|name|+----+----+----+| 4  | A1 |John|+----+----+----+表 B:+----+----+| id |name|+----+----+| 96 |John|+----+----+因此,通过比较John(B) 和John(A),我需要A1返回,因为它code是与表 A 匹配的同一行中的结果。总之,我需要一个 Django 代码来执行查询:a_name = 'John'SELECT code FROM Table_A WHERE name = a_name考虑到我只知道表 B 的值,因此我无法code通过表 A获得的值name。
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

你的表是假设名称A和B分别则:


try:

    obj = A.objects.get(name='John')

    if B.objects.filter(name='John').exists():

        print obj.code # found a match and now print code.      

except:

    pass 


查看完整回答
反对 回复 2021-10-26
?
四季花海

TA贡献1811条经验 获得超5个赞

让我们假设TableA和TableB是 Django 模型。然后,您的查询可能如下所示:


a_name = 'John'


it_matches_on_b = ( Table_B

                   .objects

                   .filter(  name = a_name )

                   .exists()

                  )


fist_a = ( Table_A

            .objects

            .filter(  name = a_name )

            .first()

          )


your_code = fist_a.code if it_matches_on_b and fist_a != None else None

我不注释代码,因为它是不言自明的。但是,如果您有评论,请在评论中写下问题。


查看完整回答
反对 回复 2021-10-26
  • 3 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号