我有以下模型(为了这个问题的目的大大简化):
class Product(models.Model):
price = models.DecimalField(max_digits=8, decimal_places=2)
sale_price = models.DecimalField(max_digits=10, blank=True, null=True, decimal_places=2)
Run Code Online (Sandbox Code Playgroud)
对于大多数产品,价格将被填补,但sale_price将不会.所以,我可以按价格订购产品:
Product.objects.order_by('price')
Product.objects.order_by('-price')
Run Code Online (Sandbox Code Playgroud)
但是,有些产品会有sale_price,我找不到一种方法来整齐地订购这些产品,以便销售价格与正常价格交错.如果我尝试按两个字段排序:
Product.objects.order_by('sale_price','price')
Run Code Online (Sandbox Code Playgroud)
...然后,所有未售出的产品一起显示,然后是所有产品,而不是交叉价格.
这有意义吗?有没有人有办法解决这个问题?
谢谢!
可能重复:
基于原型与基于类的继承
这个问题前几天出现了 - 像Python这样的基于类的语言和像Javascript这样的基于原型的语言有什么区别?除了不同的方法,两种方式看起来非常相似,我们努力寻找基于类的语言可以做的基于原型的语言不能,或反之亦然.
任何人都可以详细说明或从根本上了解它们之间的差异吗?
我没有在网上找到很多差异,只是网站向您展示如何与另一个完成一个(例如:在JavaScript中使用原型模拟类)
任何启示赞赏!
我的一位同事错误地输入了这个(简化的)代码,并想知道为什么他的例外没有被抓住:
>>> try:
... raise ValueError
... except IndexError or ValueError:
... print 'Caught!'
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError
Run Code Online (Sandbox Code Playgroud)
现在我知道捕获两种类型的异常的正确语法应该是except (IndexError, ValueError):,但为什么以上认为是有效的语法?它是如何工作的?
例如,上面的代码将抛出一个ValueError,它不会被捕获.但是拿这个代码:
>>> try:
... raise IndexError
... except IndexError or ValueError:
... print 'Caught!'
...
Caught!
Run Code Online (Sandbox Code Playgroud)
在IndexError将陷入.如何or评估,评估的内容是什么?!
感谢您可以放下任何光线!
我正在使用Python"请求"模块请求HTTP API.
result = requests.get(api_url)
Run Code Online (Sandbox Code Playgroud)
响应采用JSON格式,并包含一个"数据"键,它是一个字典.出于某些原因,我必须在脚本中进一步提出第二个请求,并且我正在尝试result.json['data']使用第二个(result2.json['data'])更新第一个字典().
我试过这个:
result.json['data'].update(result2.json['data'])
Run Code Online (Sandbox Code Playgroud)
还有这个:
for key,value in dict(result2.json['data']).iteritems():
result.json['data'][key] = value
Run Code Online (Sandbox Code Playgroud)
但这些都没有奏效,最终result.json['data']没有修改,只包含第一项.
所以我想知道Python"请求"模块是否会产生一些"只读"对象的王者,或者我是否只是遗漏了一些东西.
这是我的问题:
在我设法安装anaconda(有python 3.4)之后,我显然设法安装了pybrain.但是,当我使用来自anaconda或终端的'import pybrain'时,我也会收到此错误:
>>> import pybrain
Traceback (most recent call last):
File "<ipython-input-2-0fb7233d2a8c>", line 1, in <module>
import pybrain
File "//anaconda/lib/python3.4/site-packages/PyBrain-0.3-py3.4.egg/pybrain/__init__.py", line 1, in <module>
from structure.__init__ import *
ImportError: No module named 'structure'
Run Code Online (Sandbox Code Playgroud) 我在拥有大量IP地址的主机上运行临时Django应用程序.在使用时manage.py runserver 0.0.0.0:5000,如果可能的话,代码如何看到机器的多个IP地址中的哪一个是请求实际触及的那个?
或者换一种说法:
我的主机有IP地址10.0.0.1和10.0.0.2.当runserver正在监听时0.0.0.0,我的应用程序如何知道用户是否命中http://10.0.0.1/app/path/etc或http://10.0.0.2/app/path/etc?
我明白,如果我用Apache做这件事,我可以使用Apache环境变量SERVER_ADDR,但我不使用Apache.
有什么想法吗?
编辑
更多信息:
我正在使用一个小型Django应用程序测试负载均衡器.这个应用程序正在侦听许多不同的IP,我需要知道通过负载均衡器发出的请求中的哪个IP地址被命中,因此我可以确保它正确平衡.
我无法使用request.get_host()或request.META选项,因为它们返回用户输入的内容以达到负载均衡器.
例如:用户点击http://10.10.10.10/foo并将请求转发到http://10.0.0.1/foo或者http://10.0.0.2/foo- 但request.get_host()将返回10.10.10.10,而不是服务器正在侦听的实际IP.
谢谢,本
有没有一种方法可以按照HTTP标头中显示的顺序将数据发布到Django视图?
我需要使用PayPal的“即时付款通知”的原因-您必须通过以完全相同的顺序发送回数据来确认通知,以确保数据的完整性。我不知道这个!
Django管理站点很棒,我们在工作中使用它很多.我的问题是 - 如何在底部添加一个额外的按钮,"保存","保存并继续编辑"等按钮,保存模型,然后重定向到可用的"现场视图"按钮在表格的右上方是否有定义的模型?
提前致谢!
我正在制作一个摇滚纸剪刀游戏,并遇到了问题decisioncycle().我要做的是要求用户输入一个选项usercycle(),让计算机生成一个随机选择gamecycle(),然后确定谁赢得了回合并跟踪每个结果的输赢数.似乎决定何时随机工作.
import random
class rpsgame:
rps= ["rock", "paper","scissors"]
wincount=0
losecount=0
def usercycle(self):
userchoice = input("rock, paper, scissor.....")
print("SHOOT")
return userchoice
def gamecycle(self):
computerchoice = random.choice(rpsgame.rps)
return computerchoice
def decisioncycle(self):
if rpsgame.usercycle(self) == rpsgame.rps[0] and rpsgame.gamecycle(self) == rpsgame.rps[1]:
print("paper beats rock, you lose!")
rpsgame.losecount +=1
elif rpsgame.usercycle(self) == rpsgame.rps[1] and rpsgame.gamecycle(self) == rpsgame.rps[0]:
print("paper beats rock, you win!")
rpsgame.wincount+=1
elif rpsgame.usercycle(self) == rpsgame.rps[0] and rpsgame.gamecycle(self) == rpsgame.rps[2]:
print("rock beats scissors, you win!")
rpsgame.wincount+=1
elif rpsgame.usercycle(self) …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在Javascript中拖放时实现Adobe Illustrator风格的"智能指南"的方法.我目前正在使用jQuery UI draggable:
$('.object').draggable({
containment: 'parent',
snap: '.other-objects',
snapTolerance: 5
})
Run Code Online (Sandbox Code Playgroud)
这可以达到我想要的90% - 我可以.object在它的父级中拖动它,.other-objects当它足够接近时它会捕捉它的边缘.
然而,我想要的是某种线(或某种类型的引导线)出现,如果它与另一个对象的边缘对齐,那么我可以连续捕捉东西而不将它们直接放在每一行的旁边其他.
有人知道这是否可能,或者我是怎么做的?
有没有人知道创建递归函数背后的逻辑来生成给定单词中的所有大写字母组合?我正在尝试用Java做这个...例如,给它"ben"这个词并输出:
Ben
bEn
beN
BEn
BeN
bEN
BEN
Run Code Online (Sandbox Code Playgroud)
但对于任何长度的单词...任何帮助赞赏!
为什么dict(list(tuple))工作但不是{list(tuple)}
Eg
>>> dict([('b', 456), ('a', 123)])
{'a': 123, 'b': 456}
>>> {[('b', 456), ('a', 123)]}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)
CPython代码的哪一部分允许dict([('b', 456), ('a', 123)])?
python ×7
django ×4
dictionary ×2
javascript ×2
class ×1
django-admin ×1
django-orm ×1
draggable ×1
exception ×1
function ×1
http-post ×1
java ×1
jquery ×1
jquery-ui ×1
json ×1
list ×1
loops ×1
manage.py ×1
paypal ×1
prototype ×1
pybrain ×1
recursion ×1
sql-order-by ×1
tuples ×1