Невозможно изменить статус продукта в админке Django Mezzanine
Привет! Я пытался переопределить поле статуса продукта Django Mezzanine (Черновик / Опубликован) и добавить новую опцию (Черновик / Опубликован / Исследования) в админке, но не повезло. Я новичок в Django, пытаюсь начать новый проект на Django вместо Wordpress, так что, пожалуйста, ознакомьтесь с моим низким знанием структуры django.
Вот мой код:
корзина / корзина / приложение / мезонин / models.py
from django.db import models
from django.utils.translation import ugettext, ugettext_lazy as _
from mezzanine.core.models import Slugged, MetaData, TimeStamped
CONTENT_STATUS_DRAFT = 1
CONTENT_STATUS_PUBLISHED = 2
CONTENT_STATUS_RESEARCH = 3
CONTENT_STATUS_CHOICES = (
(CONTENT_STATUS_DRAFT, _("Draft")),
(CONTENT_STATUS_PUBLISHED, _("Published")),
(CONTENT_STATUS_RESEARCH, _("Research")),
)
class Displayable(Slugged, MetaData, TimeStamped):
status = models.IntegerField(_("Status"),
choices=CONTENT_STATUS_CHOICES, default=CONTENT_STATUS_RESEARCH,
help_text=_("With Draft chosen, will only be shown for admin users "
"on the site."))
publish_date = models.DateTimeField(_("Published from"),
help_text=_("With Published chosen, won't be shown until this time"),
blank=True, null=True, db_index=True)
Displayable.default=CONTENT_STATUS_RESEARCH
Displayable.choices=CONTENT_STATUS_CHOICES
корзина / корзина / приложение / мезонин / admin.py:
from django.contrib import admin
from mezzanine.conf import settings
from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
from cart.apps.mezzanine.models import Displayable
from mezzanine.core.admin import BaseTranslationModelAdmin
class DisplayableAdminForm(ModelForm):
def clean_content(form):
status = form.cleaned_data.get("status")
content = form.cleaned_data.get("content")
if status == CONTENT_STATUS_PUBLISHED and not content:
raise ValidationError(_("This field is required if status "
"is set to published."))
return content
class DisplayableAdmin(BaseTranslationModelAdmin):
list_display = ("title", "status", "admin_link")
list_display_links = ("title",)
list_editable = ("status",)
list_filter = ("status", "keywords__keyword")
date_hierarchy = None if settings.USE_MODELTRANSLATION else "publish_date"
radio_fields = {"status": admin.HORIZONTAL}
fieldsets = (
(None, {
"fields": ["title", "status", ("publish_date", "expiry_date")],
}),
(_("Meta data"), {
"fields": ["_meta_title", "slug",
("description", "gen_description"),
"keywords", "in_sitemap"],
"classes": ("collapse-closed",)
}),
)
form = DisplayableAdminForm
admin.site.register(Displayable, DisplayableAdmin)
settings.py:
INSTALLED_APPS = (
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.redirects",
"django.contrib.sessions",
"django.contrib.sites",
"django.contrib.sitemaps",
"django.contrib.staticfiles",
"mezzanine.boot",
"mezzanine.conf",
"mezzanine.generic",
"mezzanine.pages",
"cartridge.shop",
"mezzanine.blog",
"mezzanine.forms",
"mezzanine.galleries",
"mezzanine.twitter",
"cart.apps.mezzanine",
"mezzanine.core",
)
версии:
Мезонин 4.2.3 Джанго 1.10.8 Python 2.7.6 SQLite 3.8.2
Там нет ошибок, и сервер разработки загружается нормально. Какой шаг я пропускаю? Нужно ли мне настраивать app.py для мезонина? Спасибо за любую помощь в этом.