我想使查询工作如下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
.