【发布时间】:2019-02-01 14:58:15
【问题描述】:
模型.py
class RestaurantKeyword(models.Model):
keywords=models.CharField(max_length=200)
def __str__(self):
return str(self.keywords)
class Restaurant(models.Model):
name=models.CharField(max_length=500)
email=models.CharField(max_length=500)
web=models.CharField(max_length=500)
short_description=models.CharField(max_length=500)
description=models.CharField(max_length=500)
phone=models.IntegerField(blank=True,null=True,default=0)
lat =models.FloatField(blank=True,null=True)
lng =models.FloatField(blank=True,null=True)
address1 = models.CharField(max_length=100)
address2 = models.CharField(max_length=100,blank=True)
city = models.CharField(max_length=100)
state = models.CharField(max_length=2)
postalcode = models.CharField(max_length=20)
avg_rating=models.FloatField(blank=True,null=True)
restaurant_type=models.ForeignKey(RestaurantType,on_delete=models.CASCADE)
price=models.IntegerField(blank=True,null=True,default=0)
keywords=models.ManyToManyField(RestaurantKeyword,blank=True)
def __str__(self):
return self.name
SQL 原始查询
SELECT id,name,( 3959 * acos ( cos ( radians(30.696627)) * cos( radians( lat ) ) * cos( radians( lng ) - radians(76.693764) ) + sin ( radians(30.696627) ) * sin( radians( lat ) ) ) ) AS distance FROM newbackend_restaurant
我有 lat、lng、关键字等参数。我需要一个查询,我可以使用关键字来查找我的结果。但是 keywords 是多对多的字段。
数据库架构
【问题讨论】:
-
你想要原始的
sql或 django orm 查询? -
我想查询类似 'SELECT id,name,( 3959 * acos ( cos ( 弧度(30.696627)) * cos( 弧度( lat ) ) * cos( 弧度( lng ) - 弧度(76.693764) ) + sin ( 弧度(30.696627) ) * sin( 弧度( lat ) ) ) AS 距离和关键字 =burger FROM newbackend_restaurant' 如果可以使用 Django 查询,那会很好,否则我会考虑原始 sql 查询
标签: mysql sql django postgresql django-models