我想让查询按以下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
。
试试看
这将生成以下查询
我不确定您的要求是什么,但您可能希望通过Max PrizeVerificationCodeSMSLog同意
见https://docs.djangoproject.com/en/1.5/topics/db/aggregation/
相关问题 更多 >
编程相关推荐