Форум сайта python.su
Добрый день !
У меня такая проблема я не могу исправить ошибку создал модели но не как не могу создать
базу данных выдает ошибку.
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'Страницы'
Офлайн
related_name=u'Родительская категория'
Офлайн
'Ключивые' ‘урол’ - стоит на ошибки проверить, поправить slig есть такое Slugfield, про related name уже писали, все property и функции проверить, чтобы возвращали сточный объект
Отредактировано chaotism (Июнь 21, 2015 02:17:04)
Офлайн