Форум сайта python.su
Очень непонятно мне как производить математические операции над данными, которые были выбраны из базы, так как получаю ошибку “unsupported operand type(s)”.
Приведу пример:
min_tag = int(Tag.objects.get(id = 1).quanity)
max_tag = int(Tag.objects.get(id = 1).quanity)
step_size = max_tag - min_tag
Офлайн
значит не int там…
в консоли что ли сложно проверить?
Офлайн
slav0nic, в консоли запросила
int(Tag.objects.get(id = 1).quanity)
Офлайн
Покажи код модели.
Офлайн
expee, вот:
class Tag(models.Model):
tag = models.CharField(max_length=50)
quanity = models.SmallIntegerField()
Офлайн
Должно работать. Покажи сессию в консоли, где ты пытаешься вычесть значения и что за ошибку выдает.
Отредактировано (Дек. 28, 2009 22:33:20)
Офлайн
вот трейсбек:
Traceback:
File “C:\Python26\lib\site-packages\django\core\handlers\base.py” in get_response
92. response = callback(request, *callback_args, **callback_kwargs)
File “C:\Documents and Settings\Mutagena\workspace\MutagenaBlog\..\MutagenaBlog\core\views.py” in topic_list_viewer
72. cloud = cloud_of_tag()
File “C:\Documents and Settings\Mutagena\workspace\MutagenaBlog\..\MutagenaBlog\core\views.py” in cloud_of_tag
39. if (max_tag - min_tag) == 0:
Exception Type: TypeError at /
Exception Value: unsupported operand type(s) for -: ‘Tag’ and ‘int’
Офлайн
Mutagena, проверь type() до перевода в int и после… Может поможет.
Офлайн
Здесь говорится о том, что вы пытаетесь выполнить арифметическую операцию для объектов двух типов Int и Tag :) Показываем функцию из views.py.
Отредактировано (Дек. 28, 2009 22:45:00)
Офлайн
vaxXxa, даже до преобразования int() показывает:
(type: ‘int’)
expee, ну о том, какая ошибка я в первом посте написала :)
Вот фрагмент views.py. Он довольно огромен.
def cloud_of_tag(n = 10):
tags = Tag.objects.all()
quanity_tag = len(tags)
i = 1
min_tag = int(Tag.objects.get(id = 1).quanity)
max_tag = int(Tag.objects.get(id = 1).quanity)
while i <= quanity_tag:
j = Tag.objects.get(id=i)
if j.quanity < min_tag:
min_tag = j
if j.quanity > max_tag:
max_tag = j
i = i + 1
i = 0
steps = []
tag_list = []
if quanity_tag < n:
n = quanity_tag
if (max_tag - min_tag) == 0:
step_size = 1
else:
step_size = (max_tag - min_tag) / n
while i <= n:
steps.append(min + (i * step_size))
i = i + 1
for tag in tags.object_list:
i = 1
while i <= n:
if steps[i-1] < tag.quanity <= steps[i]:
tag_list.append(tuple(tag.tag, i))
i = i + 1
return tag_list
def topic_list_viewer(request, type_of_page, page=1):
site_link = site_url(request)
if type_of_page == 'main_page':
title = 'home'
elif type_of_page == 'page':
title = 'page'
post_list = Post.objects.all()
paginator = Paginator(post_list, 2)
try:
posts = paginator.page(page)
except (EmptyPage, InvalidPage):
posts = paginator.page(paginator.num_pages)
for post in posts.object_list:
post_tuple = post.post.partition('[break]')
post.post = post_tuple[0]
cloud = cloud_of_tag()
return render_to_response('page.html',
{'SITE_LINK': site_link,
'title': settings.BLOG_NAME,
'BLOG_NAME': settings.BLOG_NAME,
'BLOG_DESCRIPTION': settings.BLOG_SHORT_DESCRIPTION,
'keywords': settings.BLOG_KEYWORDS,
'descriptions': settings.BLOG_DESCRIPTION,
'TEMP_MEDIA_URL': settings.TEMP_MEDIA_URL,
'posts': posts,
'cloud_tags': cloud,
}
)
Отредактировано (Дек. 28, 2009 23:00:45)
Офлайн