2017-01-26 5 views
0

Привет всем Я создаю свое приложение в djando CMS, теперь я хочу добавить свой собственный класс и идентификатор в свое поле .. y попробуйте это, но я не получаю успешный результат.Добавить свой собственный класс в поле admin django-cms

в моем model.py у меня есть этот

class Entry(models.Model): 
    TYPES_CHOICES = ( 
    ('none', 'not specified'), 
    ('s', 'Series'), 
    ('mb', 'Multiples Bar'), 
    ('b', 'Bar suggestion'), 
) 
    app_config = AppHookConfigField(HealthConfig) 
    code = models.CharField(blank=True, default='', max_length=250) 
    url_suggestion = models.CharField(blank=True, default='', max_length=250, verbose_name="URL for Suggestion") 


    health_placeholder = PlaceholderField('health_info') 
    objects = AppHookConfigManager() 

    def __unicode__(self): 
    return self.url 

    class Meta: 
    verbose_name_plural = 'entries' 

и сейчас в моем form.py я это

from django import forms 
from .models import Entry 


class EntryForm(forms.ModelForm): 

    class Meta: 
    model = Entry 
    fields = '__all__' 


    def __init__(self, *args, **kwargs): 
    super(EntryForm, self).__init__(*args, **kwargs) 
    self.fields['code'].widget.attrs={ 
     'id': 'my_code', 
     'class': 'code_class', 
    } 

наконец мой admin.py, как это

from django.contrib import admin 
from cms.admin.placeholderadmin import PlaceholderAdminMixin 
from .cms_appconfig import HealthConfig 
from .models import Entry 
from .forms import EntryForm 
from aldryn_apphooks_config.admin import ModelAppHookConfig, BaseAppHookConfig 


class EntryAdmin(ModelAppHookConfig, PlaceholderAdminMixin, admin.ModelAdmin): 
    # pass 

    fieldsets = (
    ('General data', { 
     'fields':('app_config','chart', 'url',('count', 'code', 'start')) 
    }), 
    ('Suggestion',{ 
     'classes':('collapse', 'suggestion',), 
     'fields':('url_suggestion',('key1_suggestion_name','key1_suggestion'),('key2_suggestion_name','key2_suggestion'), 'primary_suggestions') 
    }), 
) 

    list_display =('app_config' ,'url', 'chart'); 

    list_filter = (
    'app_config', 
) 

    form = EntryForm 

    class Media: 
    js = ('health/js/admin/healthAdmin.js',) 
    css = { 
     'all': ('health/css/admin/admin_area.css',) 
    } 

admin.site.register(Entry, EntryAdmin) 

любая идея - я чего-то не хватает, после этого я снова переношу компонент.

Заранее благодарен!

+0

Что вы пытаетесь сделать точно? –

+0

Привет @markwalker_ Я пытаюсь добавить тот же класс в свои поля внутри администратора, потому что зависит от параметра, который я выбираю, я скрыл или показывал некоторые поля. В этом случае я пытаюсь добавить код «class =» в свой полевой код. но не работают – Stone

ответ

1

Вы можете указать пользовательскую форму для администратора, используя атрибут formModelAdmin.

Так, используя пример из документации, приведенной ниже, это будет выглядеть;

from django import forms 
from django.contrib import admin 
from myapp.models import Person 


class PersonForm(forms.ModelForm): 
    class Meta: 
     model = Person 
     exclude = ['name'] 


class PersonAdmin(admin.ModelAdmin): 
    exclude = ['age'] 
    form = PersonForm 

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form

Так что в вашем admin.py вам нужно что-то вроде;

from .forms import EntryForm 

class EntryAdmin(admin.ModelAdmin): 
    form = EntryForm 
+0

Благодаря @markwalker_ ваше решение поможет мне добавить новый класс в мое поле. Я изменил свой ответ с вашим решением – Stone