- アプリ
settings.py の移行フォルダーの場所をデフォルト以外のフォルダーに変更します。django.contrib.flatpages例えば:
settings.py:
MIGRATION_MODULES = {'flatpages': 'yourproject.flatpages.migrations'}
__init__.pyフォルダー内に空のファイルyourprojectをflatpages作成し、それらの辞書をパッケージとして扱う必要があることに注意してmigrationsくださいPython。
管理コマンドを実行してmakemigrations、最初の移行をMIGRATION_MODULESフォルダーに入力します。デフォルトのものと同じように見えるはずです。
apps.pyアプリの 1 つ (できれば flatpages 機能を使用するアプリ)内に、oggy のclass_preparedソリューションを追加します。
apps.py:
from django.apps import AppConfig
from django.db.models.signals import class_prepared
from django.db import models
def alter_flatpages(sender, **kwargs):
if sender.__module__ == 'django.contrib.flatpages.models' and sender.__name__ == 'FlatPage':
meta_description = models.CharField(max_length=255, blank=True, null=True)
meta_description.contribute_to_class(sender, 'meta_description')
class TexteConfig(AppConfig):
name = 'marlene.texte'
def __init__(self, app_name, app_module):
super().__init__(app_name, app_module)
class_prepared.connect(alter_flatpages)
再度実行して、別のマイグレーションを追加してくださいmakemigrations。今回はCharField meta_descriptionをモデルに追加しました。migrate変更をデータベースに適用します。
次を変更しFlatPageAdminます。
admin.py:
from django.contrib.flatpages.admin import FlatPageAdmin
from django.contrib.flatpages.models import FlatPage
class MarleneFlatPageAdmin(FlatPageAdmin):
fieldsets = (
(None, {'fields': ('url', 'title', 'content', 'meta_description', 'sites')}),
(_('Advanced options'), {
'classes': ('collapse',),
'fields': ('registration_required', 'template_name'),
}),
)
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, MarleneFlatPageAdmin)
このソリューションの最大の欠点はDjango、将来フラットページ アプリに新しい移行を追加する場合、それらを管理する責任があることです。現在の状況に適していると思われる場合でも、フラットページアプリを使用しないことをお勧めします.