Найти - Пользователи
Полная версия: invalid literal for int() with base 10: 'neydachka'
Начало » Django » invalid literal for int() with base 10: 'neydachka'
1
Code_Bryant
Всем привет! Очень туплю или что-то не замечаю или просто не знаю как сделать правильно, но возникла такая проблема: “invalid literal for int() with base 10: ‘neydachka’”

views.py
from django.shortcuts import render_to_response
from Blog.models import *
def index(request):
    return render_to_response('Blog/index.html')
def post(request, post_id):
    post = Post.objects.get(id=post_id)
    comment = Comment.objects.get(post=post)
    return render_to_response('Blog/post.html', {'post': post, 'comment': comment})
def blog(request):
    posts = Post.objects.all().order_by('-create_date')
    categories = Category.objects.all()
    return render_to_response('Blog/blog.html', {'posts': posts, 'categories': categories})
def category(request, cat):
    posts = Post.objects.get(category=cat)
    return render_to_response('Blog/category.html', {'posts': posts})

urls.py
from django.conf.urls import patterns, include, url
from Blog.views import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
    # Examples:
    url(r'^$', index),
    url(r'^post/([0-9]+)?/$', post),
    url(r'^blog/$', blog),
    url(r'^blog/category/([a-zA-Z0-9]+)?/$', category),
    # url(r'^VAKSA/', include('VAKSA.foo.urls')),
    # Uncomment the admin/doc line below to enable admin documentation:
    #url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
)

models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Category(models.Model):
    name = models.CharField(max_length=50, verbose_name='Имя категории транслитом')
    title = models.CharField(max_length=50, verbose_name='Название категории')
    class Meta:
        verbose_name = 'категорию'
        verbose_name_plural = 'Категории'
    def __str__(self):
        return self.title
class Tag(models.Model):
    name = models.CharField(max_length=50, verbose_name='Имя тега транслитом')
    title = models.CharField(max_length=50, verbose_name='Название тега')
    class Meta:
        verbose_name = 'тег'
        verbose_name_plural = 'Теги'
    def __str__(self):
        return self.title
class Post(models.Model):
    user = models.ForeignKey(User, related_name='Автор')
    title = models.CharField(max_length=100, verbose_name='Название поста')
    description = models.TextField()
    create_date = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
    category = models.ForeignKey(Category, verbose_name='Категория')
    tag = models.ManyToManyField(Tag, verbose_name='Теги')
    class Meta:
        verbose_name='пост'
        verbose_name_plural='Посты'
    def __str__(self):
        return self.title
class Comment(models.Model):
    content = models.TextField(verbose_name='Текст комментария')
    post = models.ForeignKey(Post, related_name='posts', verbose_name='Пост')
    user = models.ForeignKey(User, verbose_name='Автор')
    create_date = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
    class Meta:
        verbose_name='комментарий'
        verbose_name_plural='Комментарии'
    def __str__(self):
        return self.content
class Profile(models.Model):
    user = models.ForeignKey(User, related_name='profile', verbose_name='Имя пользователя')
    class Meta:
        verbose_name='профиль'
        verbose_name_plural='Профиль'
    def __str__(self):
        return self.user.get_full_name()

Ошибка возникает когда я перехожу по этой маске
url(r'^blog/category/([a-zA-Z0-9]+)?/$', category),
Ругается на это
posts = Post.objects.get(category=cat)
перехожу по ссылке вида /blog/category/neydachka/
'neydachka' это сожержимое category.name

Помогите разобраться пожалуйста, замучился уже

GitHub https://github.com/iamcodebryant/VFBWL
PanovSergey
def category(request, cat):
    print type(cat)
    posts = Post.objects.get(category__name=cat)
    return render_to_response('Blog/category.html', {'posts': posts})
Обычно то что вы называете name обозначают slug

field-lookups
Code_Bryant
Спасибо за информацию, но теперь ругается “'Post' object is not iterable” на это
{% for post in posts %}
PanovSergey
Code_Bryant
Спасибо за информацию. А для чего эта строка?
Это просто print чтобы вы поняли что cat это строка, а не Category.

Прочитайте сначала это

Это азы, а то будете через строчку спрашивать.
Code_Bryant
Спасибо. Сглупил. Я знал, что это строка, но пока удалил вы уже прочитали Мне просто нужно что бы posts содержал в себе только посты с category__name='neydachka' грубо говоря.
Еще раз благодарочка. Буду изучать.
Code_Bryant
Ура! Спасибо, еще раз, огромное вам. Как говорят “дай человеку рыбу и он проживет один день, научи его ловить рыбу и он проживет всю жизнь”. Решил проблему. Плюсую в карму

def category(request, cat):
    posts = Post.objects.all().filter(category__name=cat)
    return render_to_response('Blog/category.html', {'posts': posts})
PanovSergey
Code_Bryant
Ура! Спасибо, еще раз, огромное вам. Как говорят “дай человеку рыбу и он проживет один день, научи его ловить рыбу и он проживет всю жизнь”. Решил проблему. Плюсую в карму
У вас правильный подход
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB