2017-07-04 20 views
0

私のdjango管理パネルで私の外部アプリの名前を変更する方法がわかりません。私は、「設定」の名前を変更することができますどのように任意のアイデアを持っていないDjango - 管理者のアプリ名を変更

class ConstanceConfig(AppConfig): 
    name = 'constance' 
    verbose_name = 'My constance settings' 

:私はスタンスアプリ(「私のスタンスの設定」)の冗長な名前を変更することができます。何か案が? enter image description here

マイmodels.py:

from datetime import datetime 
from datetime import timedelta 
from urllib.parse import urlparse 
from django.db import models 
from django.urls import reverse 
from mainapp.widgets import MyTextField 
from django.template.defaultfilters import slugify 
from smart_selects.db_fields import ChainedForeignKey 
from django.db.models import Q 
from constance import config 


class Category(models.Model): 
    category_name = models.CharField(max_length=30, unique=True, 
           verbose_name='Nazwa kategorii') 
    slug = models.SlugField() 
    image = models.ImageField(upload_to='category_images', 
          verbose_name="Obrazek kategorii", 
          blank=True) 
    category_description = models.TextField(default='Opis', 
             verbose_name="Opis kategorii") 

    class Meta: 
     verbose_name_plural = " Kategorie" 

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

    def admin_image_thumb(self): 
     ''' 
     Miniaturka obrazka kategorii dla panelu admina 
     ''' 
     if self.image: 
      return('<img src="/media/%s" height="42" width="42" />') % 
(self.image) 
     else: 
      return('<img src="/media/category_images/default.ico" alt="" />') 

    admin_image_thumb.short_description = 'Miniaturka' 
    admin_image_thumb.allow_tags = True 

    def image_thumb(self): 
     ''' 
     Miniaturka obrazka kategorii 
     ''' 
     if self.image: 
      return('/media/%s') % (self.image) 
     else: 
      return('/media/category_images/default.ico') 

    def get_active_sites(self): 
     return Site.objects.filter(Q(category=self) | Q(category1=self), 
is_active=True) 

    image_thumb.short_description = 'Miniaturka' 
    image_thumb.allow_tags = True 

    def __str__(self): 
     return self.category_name 


class SubCategory(models.Model): 
    category = models.ForeignKey(
     'Category', 
     related_name='subcategory', 
     on_delete=models.CASCADE, 
     blank=True, 
     null=True, 
     verbose_name='Kategoria nadrzędna' 
    ) 
    name = models.CharField(max_length=30, verbose_name="Nazwa subkategorii") 
    slug = models.SlugField() 

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

    def get_active_sites(self): 
     return Site.objects.filter(Q(subcategory=self) | Q(subcategory1=self), is_active=True) 

    class Meta: 
     verbose_name_plural = " Subkategorie" 

    def __str__(self): 
     return self.name 


def get_deadline(): 
    return datetime.today() + timedelta(days=20) 


class Site(models.Model): 
    category = models.ForeignKey('Category') 
    subcategory = ChainedForeignKey(
     'SubCategory', 
     chained_field='category', 
     chained_model_field='category', 
     show_all=False, 
     auto_choose=True, 
     default=None) 
    name = models.CharField(max_length=config.TITLE_LENGTH_MAX, 
verbose_name="Tytuł") 
    slug = models.SlugField() 
    description = models.TextField(max_length=config.DESCRIPTION_LENGTH_MAX, 
verbose_name="Opis") 
    # importuje zmienione TextFields widgets.py 
    keywords = MyTextField(max_length=config.KEYWORDS_LENGTH_MAX, 
verbose_name="Słowa kluczowe") 
    date = models.DateTimeField(default=datetime.now) 
    date_end = models.DateTimeField(null=True, blank=True, default=None) 
    url = models.URLField() 
    is_active = models.BooleanField(default=False, verbose_name='Aktywna') 

    flagged = models.TextField(max_length=400, verbose_name="Flagowanie", 
null=True, blank=True, default='') 
    flagged_true = models.BooleanField(default=False, verbose_name='Oflagowana') 

    category1 = models.ForeignKey('Category', related_name='category', 
blank=True, null=True, default=None) 
    subcategory1 = ChainedForeignKey(
     'SubCategory', 
     chained_field='category1', 
     chained_model_field='category', 
     related_name='subcategory', 
     show_all=False, 
     auto_choose=True, blank=True, null=True) 

    group = models.ForeignKey('Group', default='Podstawowy', 
          help_text="<div id='group'><ul><li>Możesz dodać 
wpis do 1 kategorii</b></li></ul></div>") 

    email = models.EmailField(help_text='Podaj adres email') 
    user = models.CharField(max_length=100) 
    kod = models.CharField(max_length=20) 

    def save(self, *args, **kwargs): 
     self.slug = slugify(self.name) 
     # if len(self.flagged.splitlines() > 3): 
     #  self.flagged_true = True 
     super(Site, self).save(*args, **kwargs) 

    def get_absolute_url(self): 
     return reverse('site', args=[str(self.category.slug), 
           str(self.subcategory.slug), str(self.slug), 
str(self.id)]) 

    def get_thumb(self): 
     host = urlparse(self.url).hostname 
     if host.startswith('www.'): 
      host = host[4:] 
     thumb = 'http://free.pagepeeker.com/thumbs.php?size=l&url=http://' + host 
     # thumb = 'https://api.thumbalizr.com/?url=http://' + host + '&width=500' 
     return thumb 

    class Meta: 
     verbose_name_plural = "Strony" 

    def __str__(self): 
     return self.name 


class Group(models.Model): 
    group_name = models.CharField(max_length=30, verbose_name='Nazwa grupy', 
unique=True) 
    codes = models.TextField(null=True, blank=True) 
    pay = models.CharField(
     max_length=10, 
     choices=(('PAID', 'PŁATNY'), ('FREE', 'DARMOWY')), 
     default='FREE', 
     verbose_name="Czy płatny") 
    time = models.CharField(
     max_length=3, 
     choices=(('T', 'TAK'), ('N', 'NIE')), 
     default='N', 
     help_text='Czy wpis ma być wyłączony po jakimś czasie czy 
bezterminowy') 
    days = models.IntegerField(default=1) 
    premium_box = models.CharField(
     max_length=3, 
    choices=(('T', 'TAK'), ('N', 'NIE')), 
    default='N', 
    help_text='Czy wpis ma być wyświetlany w okienku reklamowym') 
category = models.CharField(
    max_length=2, 
    choices=(('1', '1'), ('2', '2')), 
) 

is_active = models.BooleanField(default=True, verbose_name='Aktywna') 

class Meta: 
    verbose_name_plural = "Grupy wpisów" 

def __str__(self): 
    return self.group_name 

そして、私のadmin.pyの一部:私のvenvsファイルで

from constance.admin import ConstanceAdmin, ConstanceForm, Config 


class CustomConfigForm(ConstanceForm): 
    def __init__(self, *args, **kwargs): 
     super(CustomConfigForm, self).__init__(*args, **kwargs) 


class ConfigAdmin(ConstanceAdmin): 
    change_list_form = CustomConfigForm 
    change_list_template = 'admin/config/change_list.html' 


admin.site.unregister([Config]) 
admin.site.register([Config], ConfigAdmin) 

私は(スタンスディレクトリ内)admin.pyを見つけました。あり:

class Config(object): 
    class Meta(object): 
     app_label = 'constance' 
     object_name = 'Config' 
     model_name = module_name = 'config' 
     verbose_name_plural = _('config') 
     abstract = False 
     swapped = False 

     def get_ordered_objects(self): 
      return False 

     def get_change_permission(self): 
      return 'change_%s' % self.model_name 

     @property 
     def app_config(self): 
      return apps.get_app_config(self.app_label) 

    _meta = Meta() 

私は

verbose_name_plural = _('config') 

を変更することができます:私はまだ私のadmin.pyファイルからこれを変更することはできません

verbose_name_plural = _('My config label') 

...

答えて

1

にアプリケーションの名前が正しく表示されている場合は、モデルの名前を指しています。あなたが望むことをするための1つの方法は、モデルのメタを変更することです:

class Config(models.Model): 
    class Meta: 
     verbose_name = 'Some other name' 
+0

私はエラーを取得する:「django.contrib.admin.sites.NotRegistered:モデルコンフィグが登録されていないが、」 - 私はadmin.pyにそれを置きます。このコードはどこに置くべきですか? – jundymek

+0

... 'models.py'と' admin.py'を共有できますか? –

+0

あなたは 'admin.site.unregister([Config])'のためにエラーが発生していると思います。モデルを登録解除することはできませんまだ登録されていないプロジェクトの開始時に登録が行われます(たとえば、runserverを起動するたびに)。 – FlipperPA

0

解決策が見つかりました。二日の試行錯誤...;)

​​
関連する問題