from django.db import migrations, models from pypinyin import Style, lazy_pinyin def fill_pinyin(apps, schema_editor): Dish = apps.get_model('meals', 'Dish') for dish in Dish.objects.all(): full = ''.join(lazy_pinyin(dish.name)) initials = ''.join(lazy_pinyin(dish.name, style=Style.FIRST_LETTER)) dish.pinyin = f'{full} {initials}' dish.save(update_fields=['pinyin']) class Migration(migrations.Migration): dependencies = [ ('meals', '0004_dish_cuisine'), ] operations = [ migrations.AddField( model_name='dish', name='pinyin', field=models.CharField(blank=True, editable=False, max_length=200, verbose_name='拼音索引'), ), migrations.RunPython(fill_pinyin, migrations.RunPython.noop), ]