2

私のプロジェクトには、漢字のデコードに適した unidecode という python パッケージが含まれています。しかし、Django プロジェクトで使用すると、prepopulated_fields が中国語で機能しませんでした。

バージョン情報: ジャンゴ 1.86、Python 3.4

モデル.py

# coding:utf-8

from django.template.defaultfilters import slugify
from django.db import models
from django.contrib import admin
from unidecode import unidecode

# 类别
class Category(models.Model):

    name = models.CharField(max_length=128, unique=True)
    likes = models.IntegerField(default=0)
    slug = models.SlugField(unique=True)

    class Meta:
        # 定义显示的名字
        verbose_name = '类别'
        verbose_name_plural = '类别'

    def save(self,*args,**kwargs):
        self.slug = slugify(unidecode(self.name))
        super(Category,self).save(*args,**kwargs)

    def __str__(self):
        return self.name

class CategoryAdmin(admin.ModelAdmin):
    prepopulated_fields = {'slug':(unidecode('name'),)}



# 文章类
class Article(models.Model):
    title = models.CharField(u'标题', max_length=256)
    content = models.TextField(u'内容')
    pub_date = models.DateTimeField(u'发表时间', auto_now_add=True, editable=True)
    update_time = models.DateTimeField(u'更新时间',auto_now=True, null=True)
    category = models.ForeignKey(Category)          #ForeignKey, 创建1对多关系的字段类型.

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章'

    def __str__(self):
        return self.title       #按照标题来显示每个实例,也就是一行数据

admin.py

# coding:utf-8
from django.contrib import admin
from .models import Article, Category ,CategoryAdmin


from django_summernote.admin import SummernoteModelAdmin
class SomeModelAdmin(SummernoteModelAdmin):
    pass


# 注册
admin.site.register(Article,SomeModelAdmin)
admin.site.register(Category,CategoryAdmin)

いくつかの漢字を入力すると、スラッグ フィールドが次のように自動入力されることを確認したいと思います。 ここに画像の説明を入力

しかし、実際には、スラッグ フィールドは、Django admin では次のような文字で自動入力されていません。 ここに画像の説明を入力

4

1 に答える 1