2017-01-26 1 views
0

Salut tout le monde Y créer ma propre application dans djando CMS, maintenant je veux ajouter ma propre classe et ID à mon domaine .. y essayer, mais je ne comprends pas résultat réussi.ajouter ma propre classe dans le domaine admin django-cms

dans mon model.py Je cette

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' 

et maintenant dans mon form.py j'ai cette

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', 
    } 

enfin mon admin.py est comme ça

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) 

une idée est que je manque quelque chose, après cela, je fais une migration du composant à nouveau.

Merci d'avance!

+0

Qu'essayez-vous de faire exactement? –

+0

Salut @markwalker_ J'essaie d'ajouter la même classe à mes champs, à l'intérieur de l'admin, car dépend de l'option que je sélectionne je cache ou affiche certains champs. Dans ce cas, j'essaie d'ajouter le 'code class =" "' à mon code de champ. mais ne fonctionne pas – Stone

Répondre

1

Vous pouvez spécifier un formulaire personnalisé pour l'administrateur en utilisant l'attribut form de ModelAdmin. Donc, en utilisant l'exemple des documents liés ci-dessous, cela ressemblerait à;

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

Donc, dans votre admin.py vous auriez besoin de quelque chose;

from .forms import EntryForm 

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

Merci @markwalker_ votre solution m'aide à ajouter une nouvelle classe à mon domaine. J'ai modifié ma réponse avec votre solution – Stone