Django模型查询使用join

 mobiledu2502870687 发布于 2023-02-02 19:04

我想使查询工作如下sql:

sql_str = '''
    select * from luckydraw_winner W
    inner join luckydraw_prizeverificationcodesmslog L on W.id =L.winner_id
    where W.lucky_draw_id = %s
    limit 10
'''

楷模:

class Winner(models.Model):
    lucky_draw = models.ForeignKey(LuckyDraw)
    participation = models.ForeignKey(Participation)
    prize = models.ForeignKey(Prize)
    mobile_number = models.CharField(max_length=15, null=True, default = None)

class PrizeVerificationCodeSMSLog(models.Model):
    winner = models.ForeignKey(Winner)
    mobile_number = models.CharField(max_length=15, db_index=True)
    created_on = models.DateTimeField(auto_now_add=True)

因为 mobile_number并不总是填写Winner模型,我想要的是拥有手机号码或获得短信的赢家.所以必须加入PrizeVerificationCodeSMSLog以实现我的目的.
只有赢家很简单:

winners = models.Winner.objects.filter(lucky_draw_id=id).order_by('-created_on')[:10]

但我不知道可以添加什么过滤器来加入PrizeVerificationCodeSMSLog.


我终于明白了如何在django中检索我想要的数据.

如果您想让A另一个B具有外键的模型限制模型A,请不要尝试使用filter().因为A不知道B,但B知道A!只是检索A基地B.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有