我完成了清理我的项目.我删除了没有用的应用程序和代码然后我安排它们.在此之后我遇到了错误
TypeError: object of type 'instancemethod' has no len()
Run Code Online (Sandbox Code Playgroud)
所以我把它改成count()但我又遇到了错误
AttributeError: 'function' object has no attribute 'count'
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def budget(request):
envelopes = Envelope.objects.filter(
user=request.user).exclude_unallocated
return render(request, 'budget.html', {
'limit': account_limit(request, 15, envelopes),
}
def account_limit(request, value, query):
count_objects = len(query)
//other codes here
return result
Run Code Online (Sandbox Code Playgroud)
我想我在这里删除了一些东西,这就是我收到错误的原因
当用户在每个信封中执行金钱分配时,有时他们忘记将金额放入其他信封中,结果为"0".然后它将导致InvalidOperation.
如何解决这个错误?或者系统如何只获得大于0的金额?
例外
Types: InvalidOperation
Value: Invalid literal for Decimal: u''
Run Code Online (Sandbox Code Playgroud)
envelope(application)中的envelopes/views.py
t2_payee = 'Envelope Transfer'
for val in request.POST:
if val[0:4] == "env_":
env = Envelope.objects.get(pk=int(val[4:]))
amt = Decimal(request.POST[val])
<WSGIRequest
path:/envelopes/allocate/6313/,
GET:<QueryDict: {}>,
POST:<QueryDict: {u'allocation_date': [u'2013-03-03'], u'month': [u'03'],
u'source': [u'6313'], u'year': [u'2013'], u'env_6316': [u''],
u'csrfmiddlewaretoken': [u'3kKoVymvIpbyhCknE1c3WH6YFznTaEoj'],
u'env_6315': [u'1'], u'env_6314': [u'0']}>,
COOKIES:{'__utma': '136509540.132217190.1357543480.1362303551.1362307904.34',
Run Code Online (Sandbox Code Playgroud)
'__ utmb':'1
我知道我们可以使用 try 和 except 函数来捕获错误。但是我每天监视哨兵,系统总是在任何视图中出现异常。像往常一样,我使用 try 和 except 来捕捉视图中的错误。
我的问题是。是否可以仅在一个函数中捕获来自任何视图的所有错误?然后用户将重定向到另一个页面。哪里是最好的地方?我正在考虑中间件,但我不了解它。
我正在尝试对重复值进行分组,但它不起作用。我已经谷歌很多次了,他们指出了distinct()函数。无论我做什么都不起作用。我之前在其他查询(不是我的)中尝试过distinct()并且它有效,现在我正在使用它,它不起作用。
这是我的代码:
模型.py
class Transaction(models.Model):
payee = models.CharField(
max_length=255
)
Run Code Online (Sandbox Code Playgroud)
视图.py
transactions = Transaction.objects.values_list('payee', flat=True).distinct()
Run Code Online (Sandbox Code Playgroud)
输出:
[u'YOUR LOCAL SUPERMARKET',
u'CITY OF SPRINGFIELD',
u'SPRINGFIELD WATER UTILITY',
u'DEPOSIT',
u'DEPOSIT']
Run Code Online (Sandbox Code Playgroud)
请注意,输出是重复的DEPOSIT