Django Как добавить класс медиа с условием - PullRequest
0 голосов
/ 06 мая 2020

Как добавить класс медиа с условием, только в форме добавления и изменения, но не на странице просмотра (где поля доступны только для чтения)?

или добавить медиа класс с условием по идентификатору группы пользователей?

моя модель admin



class CooperationBilateraleAdmin(ManyToManyAdmin):

    fieldsets = [
        ( '', {
            'fields': ['paysPartenaires', 'instrumentJuridique',('partenaire','gouvernement','paysP','etat','adefinir'),'objet', 'axeCooperation']
        }),
        ('Autres élements à rajouter ?', {
            'fields': ['infoPlus', ]
        }),
        ('', {
            'fields': [ 'acteJuridique',('dateSignature','dateEntreeVigueur' ),('duree','dureeplus5ans', 'renouvellement'), ('pays', 'villeSignature')]
        }),
        ('Base Documentaire', {
            'fields': [], 'description': 'Joindre le(s) fichier(s) '}),

    ]
    class Media:
        js = (
            '//ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js',  # jquery
            '/static/admin/js/CooperationBilaterale.js',  # project static folder
        )
        css = {
            'all': ('/static/admin/css/CooperationBilaterale.css',)
        }

    def render_change_form(self, request, context, *args, **kwargs):

        user = get_user_model()
        group = request.user.groups.values_list('id', flat=True).first()

        if request.user.has_perm('system.edit_CooperationBilaterale') or request.user.has_perm('system.add_CooperationBilaterale'):
            context['adminform'].form.fields['partenaire'].queryset = PartenaireInternational.objects.filter( caneva__contains=',2,')
            context['adminform'].form.fields['etat'].queryset = Etat.objects.filter(type__exact=3)
            context['adminform'].form.fields['duree'].queryset = DureeCooperation.objects.all().order_by('order')


        if group==2: 
            context['adminform'].form.fields['paysPartenaires'].queryset = Pays.objects.filter(Q(region=1) | Q(region=2)).distinct()
        if group==3: 
            context['adminform'].form.fields['paysPartenaires'].queryset = Pays.objects.filter(region=6).distinct()
        if group == 4: 
            context['adminform'].form.fields['paysPartenaires'].queryset = Pays.objects.filter(Q(region=3) | Q(region=4)).distinct()

        return super(CooperationBilateraleAdmin, self).render_change_form(request, context, *args, **kwargs)

1 Ответ

0 голосов
/ 06 мая 2020

Вы можете добавить что-то вроде следующего в соответствующие части render_change_view:

if group == 2:
    context["media"] += forms.Media(
        css={"all": ("/static/admin/css/CooperationBilaterale.css",)},
        js=["/static/admin/js/CooperationBilaterale.js"],
    )

или что-то еще, что вам нужно. Убедитесь, что вы импортировали form вверху страницы:

from django import forms
...