Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 16, 2015 09:13:33

fox85
Зарегистрирован: 2014-05-30
Сообщения: 56
Репутация: +  -1  -
Профиль   Отправить e-mail  

Найти ошибку в коде

Добрый день !
У меня такая проблема я не могу исправить ошибку создал модели но не как не могу создать
базу данных выдает ошибку.
setattr(cls, related.get_accessor_name(), self.related_accessor_class(related))
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-11: ordinal not in range(128)

Я сейчас установил django 1.8.2. вот моя модель

# -*- coding: utf-8 -*-
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
import  random
from  django.conf import  settings
from ckeditor.fields import RichTextField
def make_uplpad_path(instance, filename, prefix = False):
    #Переменовать имени загруски файла
    n1 = random.randint(0,10000)
    n2 = random.randint(0,10000)
    n3 = random.randint(0,10000)
    c = filename.split('.')
    filename = str(n1)+"_"+str(n2)+"_"+str(n3) + c[-1]
    return u"%s/%s" % (settings.IMAGE_UPLOAD_DIR, filename)
# Create your models here.
class Category(MPTTModel):
    name = models.CharField(max_length=250,db_index=True, unique=True,  default='', blank=True, verbose_name=u'Название')
    title = models.CharField(max_length=250, default='', verbose_name=u'Заголовак в браузере', blank=True)
    meta_key = models.CharField(max_length=250, default='', verbose_name=u'Ключивые слова', blank=True)
    meta_desc = models.CharField(max_length=250, default='', verbose_name=u'Мета описание', blank=True)
    parent = TreeForeignKey('self', null=True, blank=True, related_name=u'Родительская категория')
    slug = models.CharField(max_length=100, default='', blank=True, verbose_name=u'Урл' )
    published = models.BooleanField(verbose_name=u'Опубликован', default=0)
    ordering = models.IntegerField(verbose_name=u'Порядок сортировки', default=0, blank=True, null=True)
    count_posts = models.IntegerField(verbose_name=u'Количестово постов', default=0, blank=True, null=True)
    @property
    def name2(self):
        return self.name  + self.title
    def get_url(self):
        return "/blog/%s/" % self.slug
    def __unicode__(self):
        return self.name
    class Meta:
        verbose_name_plural = u'Категории'
        verbose_name = u'Категория'
        ordering = ['ordering']
class Tags(models.Model):
    name = models.CharField(max_length=250, db_index=True, unique=True, blank=False, verbose_name=u'Название')
    slig = models.CharField(max_length=250, blank=True, verbose_name=u'урол')
    published = models.BooleanField(verbose_name=u'Опубликован')
    ordering = models.IntegerField(verbose_name=u'Порядок сортировки', default=0, blank=True, null=True)
    count_post = models.IntegerField(verbose_name=u'Количестово постов', default=0, blank=True, null=True)
    def get_url(self):
        return '/blog/tag/%s/' % self.slig
    def __unicode__(self):
        return self.name
    class Meta:
        verbose_name_plural = u'Теги'
class Post(models.Model):
    name = models.CharField(max_length=250, verbose_name=u'Название RU')
    title = models.CharField(max_length=250, blank=True, verbose_name=u'Заголовок в браузере')
    metakey = models.CharField(max_length=250, blank=True, verbose_name=u'Ключивые слова,')
    metadesc = models.CharField(max_length=250, blank=True, verbose_name=u'Мета описание')
    image = models.ImageField(upload_to=make_uplpad_path, blank=True, verbose_name=u'Изображение')
    category = models.ForeignKey(Category,related_name='c1', blank=True, verbose_name=u'Категория')
    tags = models.ManyToManyField(Tags, null=True, related_name='c2', blank=True, verbose_name=u'Теги')
    slug = models.CharField(max_length=250, blank=True, verbose_name=u'Урл')
    short_text_ru = RichTextField(blank=True, verbose_name=u'Короткое описание RU')
    short_text_en = RichTextField(blank=True, verbose_name=u'Короткое описание EN')
    video = models.CharField(max_length=250,blank=True, verbose_name=u'Видео id в кратком описании')
    short_text_ru = RichTextField(blank=True, verbose_name=u'Короткое описание RU')
    short_text_en = RichTextField(blank=True, verbose_name=u'Короткое описание EN')
    date = models.DateField(auto_now_add=True, auto_add=True, blank=True, verbose_name=u'Дата публикации')
    published = models.BooleanField(verbose_name=u'Опубликован')
    show = models.BooleanField(verbose_name=u'Всегда вверху')
    ordering = models.IntegerField(verbose_name=u'Порядок сортировки', default=0, blank=True, null=True)
    comments_count = models.IntegerField(verbose_name=u'Количестово коментариев', default=0, blank=True, null=True)
    raiting = models.DecimalField(max_digits=3, decimal_places=2, default=0.00, verbose_name=u'Рейтинг')
    count_view = models.IntegerField(verbose_name=u'Количестово просмотров', default=0, blank=True, null=True)
    reit = models.DecimalField(max_digits=2, decimal_places=1, verbose_name=u'Рейтинг', blank=True, null=True, default=0,)
    count_votes = models.IntegerField(verbose_name=u'Количестово голосов', blank=True, null=True, default=0,)
    def get_url(self):
        return "/blog/%s/%s/" % (self.category.slug,self.slug)
    def save(self):
        super(Post,self).save()
        c = Post.objects.filter(category=self.category,published=1).count()
        self.category.count_posts = c
        self.category.save()
        tags = self.tags.all()
        for t in tags:
            t.count_posts = Post.objects.filter(tags=t, published=1).count()
            t.save()
        super(Post, self).save()
    def pic(self):
        if self. image:
            return u'<img src="%s"  width="70" />' % self.image.url
        else:
            return '(none)'
    pic.short_description = u"Большая картинка"
    pic.allow_tags = True
    def __unicode__(self):
        return  self.name_ru
    class Meta:
        verbose_name_plural = u'Страницы'
Я использую библиотеки

django-mptt == 0.7.4
pillow == 2.8.2
django-ckeditor == 4,4,8

Офлайн

#2 Июнь 16, 2015 11:04:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Найти ошибку в коде

related_name=u'Родительская категория'
Ты с ума сошел? Это же имя атрибута модели для обратной связи для ForeignKey. Одно слово строчными буквами латиницей.



Офлайн

#3 Июнь 21, 2015 02:15:21

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Найти ошибку в коде

'Ключивые' ‘урол’ - стоит на ошибки проверить, поправить slig есть такое Slugfield, про related name уже писали, все property и функции проверить, чтобы возвращали сточный объект



Отредактировано chaotism (Июнь 21, 2015 02:17:04)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version