Django: Как я могу скрыть поле с пустым значением в режиме изменения (разрешение может просматривать) в админке - PullRequest
0 голосов
/ 06 мая 2020

Как я могу скрыть поле с пустым значением в окне изменения в админке

У меня есть группа разрешений goup1 и группа 2 и группа 3

группа 1: разрешение = можно редактировать + можно добавлять + может просматривать + может удалять

группа 2: разрешение = может редактировать + может dd

разрешение группы 3 = может просматривать

проблема в group3, у меня пустое поле (поле файла или charfield ...)

Мне нужно скрыть пустое значение в group3, чтобы группа могла видеть поле juste со значением, а не пустое (см. пример изображения)

Мне нужно скрыть пустое поле, это поле Dynami c, id'не всегда имеют одинаковые поля, может быть, еще одно поле файла

также, если нет файла, поэтому они должен быть скрыт

Admin.py


class AnnexeCooperationBilateraleInline(admin.StackedInline):
    model = Annexe
    extra = 1
     #formset = RequiredInlineFormSet
    exclude =["cooperationMultilaterale",'am','calip']


class InstrumentJuridiqueDocCooperationBilateraleInline(admin.StackedInline):
    model = InstrumentJuridiqueDoc
    extra = 1
    max_num = 1
     #formset = RequiredInlineFormSet
    exclude =["cooperationMultilaterale",'am','calip']


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/assets_admin.js',  # project static folder
        )
        css = {
            'all': ('/static/admin/css/CooperationBilateraless.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['media'] += forms.Media(
                css={"all": ("/static/admin/css/CooperationBilaterale.css",)},
                js=["/static/admin/js/CooperationBilaterale.js"],
            )

        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: # Goupe  Bilatérale Afrique et Pays arabes
            context['adminform'].form.fields['paysPartenaires'].queryset = Pays.objects.filter(Q(region=1) | Q(region=2)).distinct()
        if group==3: # Goupe  Bilatérale Europe
            context['adminform'].form.fields['paysPartenaires'].queryset = Pays.objects.filter(region=6).distinct()
        if group == 4: # Goupe  Bilatérale Amérique et Pays d'Asie
            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)

    def save_model(self, request, obj, form, change):
        if getattr(obj, 'created_by', None) is None:
            obj.created_by = request.user
        obj.save()

    #def get_readonly_fields(self, request, obj=None):
        #readonly_fields = [];
        #readonly_fields.append('partenaire')
        #return readonly_fields


    #autocomplete_fields = ['paysPartenaires','instrumentJuridique','pays']
    inlines = (InstrumentJuridiqueDocCooperationBilateraleInline,AnnexeCooperationBilateraleInline,)
    pass




admin.site.register(CooperationBilaterale, CooperationBilateraleAdmin)

если возможно, мне нужно решение, которое я могу использовать в модели администратора.

1 Ответ

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

Я нашел решение, используя jQuery

if (!$) {
    // Need this line because Django also provided jQuery and namespaced as django.jQuery
    $ = django.jQuery;
}


$(window).on('load', function() {

$('div.readonly').each(function(){
  if($(this).text()=='-' || $(this).text()==''){
   $(this).parent().css( "display", "none" );
  }


})

});

, оно скрывает все поля с пустым значением в форме изменения (разрешение можно только просматривать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...