我尝试实现这个公式:http ://andrew.hedges.name/experiments/haversine/ aplet对我测试的两个点有好处:

但我的代码不起作用.
from math import sin, cos, sqrt, atan2
R = 6373.0
lat1 = 52.2296756
lon1 = 21.0122287
lat2 = 52.406374
lon2 = 16.9251681
dlon = lon2 - lon1
dlat = lat2 - lat1
a = (sin(dlat/2))**2 + cos(lat1) * cos(lat2) * (sin(dlon/2))**2
c = 2 * atan2(sqrt(a), sqrt(1-a))
distance = R * c
print "Result", distance
print "Should be", 278.546
Run Code Online (Sandbox Code Playgroud)
它返回的距离是5447.05546147.为什么?
比方说,我有一个标签模型的pk列表
pk_list = [10, 6, 3]
Run Code Online (Sandbox Code Playgroud)
我有另一个模型,m2m字段的标签和一个实例,其中包含3个标签(上面的pks).
class Node(models.Model):
...
tags = models.ManyToManyField(Tag, related_name='nodes')
Run Code Online (Sandbox Code Playgroud)
我想检索一个包含我的pk_list中指定的精确标记集的节点.当我做
Node.objects.filter(tags__in=pk_list)
Run Code Online (Sandbox Code Playgroud)
它返回三个相同实例的列表
[<Node: My node title>, <Node: My node title>, <Node: My node title>]
Run Code Online (Sandbox Code Playgroud)
调用.get()不起作用,因为它显然必须返回单个实例.
那么,我该如何检索单个实例?我必须注意,如果我的pk_list不同,例如.[10,6]或[10,6,3,7]然后我必须得到任何东西.我需要一个完全匹配.
谢谢
我在bootstrap 3框架中的导航栏中有一个文本输入.
<div class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">Title</a>
</div>
<div class="navbar-collapse collapse">
<div class="navbar-form navbar-right">
<div class="form-group">
<input type="text" placeholder="Search..." id="search" class="form-control" />
</div>
<a href="#" class="btn btn-success">Contact</a>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是jsfiddle:http://jsfiddle.net/KKm3M/1/
我的文本输入所做的是点击数据库以获取按键上的搜索结果.它工作正常,我测试它将结果抛给其他地方的临时div.
现在,我希望将这些结果显示在文本输入下的下拉菜单中.一旦从后端返回第一个结果,就会显示下拉列表.试图寻找片段,但悲惨地失败了.我怎样才能做到这一点?
我有一系列可以投票或投票的项目.
{"_id" : 1, "name": "foo", "upvotes" : 30, "downvotes" : 10}
{"_id" : 2, "name": "bar", "upvotes" : 20, "downvotes" : 0}
{"_id" : 3, "name": "baz", "upvotes" : 0, "downvotes" : 0}
Run Code Online (Sandbox Code Playgroud)
我想用聚合来计算质量
db.items.aggregate([
{"$project":
{
"name": "$name",
"upvotes": "$upvotes"
"downvotes": "$downvotes",
"quality": {"$divide":["$upvotes", "$downvotes"]}
}
},
{"$sort": {"quality":-1}}
]);
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,因为除以零.我需要实施适当的调节:
如果upvotes!= 0并且downvotes == 0那么质量= upvotes如果upvotes和downvotes都是0那么质量是0
我尝试使用三元成语将downvotes调整为1.但无济于事.
db.items.aggregate([
{"$project":
{
"name": "$name",
"upvotes": "$upvotes",
"downvotes": "$downvotes" ? "$downvotes": 1
}
},
{"$project":
{
"name": "$name",
"upvotes": "$upvotes"
"downvotes": …Run Code Online (Sandbox Code Playgroud) 我的数据库中有55249个城市.每一个都有纬度经度值.对于每个城市,我想计算到每个其他城市的距离,并存储不超过30公里的城市.这是我的算法:
# distance function
from math import sin, cos, sqrt, atan2, radians
def distance(obj1, obj2):
lat1 = radians(obj1.latitude)
lon1 = radians(obj1.longitude)
lat2 = radians(obj2.latitude)
lon2 = radians(obj2.longitude)
dlon = lon2 - lon1
dlat = lat2 - lat1
a = (sin(dlat/2))**2 + cos(lat1) * cos(lat2) * (sin(dlon/2))**2
c = 2 * atan2(sqrt(a), sqrt(1-a))
return round(6373.0 * c, 2)
def distances():
cities = City.objects.all() # I am using Django ORM
for city in cities:
closest = list()
for tested_city in cities:
distance …Run Code Online (Sandbox Code Playgroud) 针对json编写的Swagger 2.0规范,在Falcon视图中验证传入请求的最便捷,最全面的方法是什么?
我曾经使用称为pyramid_swagger的出色工具对Pyramid应用程序执行相同的操作。它可以在应用程序级别无缝地插入,并将validated字典附加到request对象上。它包含了所有内容,包括路径参数,查询字符串参数,当然还有主体参数。
我尝试了Flex和falcon-json-io,但无法使其满足我的需要。另外serve_swagger是完全不同的故事,我不需要自动生成的API。
此时,我正在考虑编写自己的工具或扩展Flex或falcon-json-io。有什么我想念的吗?
我一直致力于将两个遗留数据库中的57k +记录精炼和重构为一个与Django兼容的实体.现在,当我完成后,我将其作为夹具倾倒,我试图在生产环境中加载它.
我的问题是这个过程在一段时间后被"杀死".我的过程是:
./manage.py syncdb --noinput
./manage.py loaddata core/fixtures/auth.json # just a default user
./manage.py migrate
Run Code Online (Sandbox Code Playgroud)
结果:
Running migrations for django_extensions: # custom apps migrate just fine
- Migrating forwards to 0001_empty.
> django_extensions:0001_empty
- Loading initial data for django_extensions.
Installed 0 object(s) from 0 fixture(s)
Running migrations for myotherapp:
- Migrating forwards to 0001_initial.
> myotherapp:0001_initial
- Loading initial data for myotherapp.
Installed 4 object(s) from 1 fixture(s) # my other app with a fixture migrates ok
Running migrations …Run Code Online (Sandbox Code Playgroud) 如何使用内容类型框架检索已知字段的 related_name?
我已经达到了获得实际领域的程度。但我不知道如何掌握它的论点。
field = content_type.model_class()._meta.get_field_by_name('field_name')
related_name = ?
Run Code Online (Sandbox Code Playgroud) 即使我每个请求有几个项目,但只有第一个(每个请求)正在进入管道,实际上保存为Django模型实例.
这是我的代码,我错过了什么?
# my_spider.py
class MySpider(CrawlSpider):
name = 'my_spider'
...
def parse(self, response):
x = HtmlXPathSelector(response)
item = MyDjangoItem()
headings = x.select('//h2/text()').extract()
for h in headings:
item['name'] = h
yield item
url = 'http://example.com/next' # I have custom rules for constructing (not extracting) next url
yield Request(url, callback=self.parse)
# pipelines.py
class MyPipeline(object):
def process_item(self, item, spider):
if spider.name == 'my_spider':
if item['name']:
item.save()
return item
Run Code Online (Sandbox Code Playgroud) 我有一个charfield作为主键的模型.在创建实例时(通过管理面板)一切都很好,我的干净方法也可以.但是,如果我回来更新myfield,不仅清理方法无法捕获非数字字符,而且整个实例都是重复的.一个具有旧的myfield值,另一个具有改变的myfield.
# models.py
class Mymodel(models.Model):
myfield = models.CharField(primary_key=True, max_length=10)
...
def clean(self):
if not re.match(r'[0-9]+', self.pesel):
raise ValidationError('Digits only.', code='invalid')
super(Mymodel, self).clean()
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?我需要它作为主键,我需要它是可编辑的.这个干净的额外问题不能很好地运作,我认为它可能是连接的.我是Django 1.5.5
django ×5
python ×5
algorithm ×1
css ×1
distance ×1
django-admin ×1
django-orm ×1
django-south ×1
falcon ×1
geo ×1
geocoding ×1
geography ×1
javascript ×1
jquery ×1
json ×1
mongodb ×1
scrapy ×1
swagger ×1
validation ×1