django suit and select2 autocomplete inlines

862 Views Asked by At

I had a serious problem with Django-Select2 and Django-Suit, I'm trying to include a autocomplete field from select2 in admin suit, but I fail, the problem is that the links to add another do not appear in the result admin form; please any help is well received.

My two forms are:

class EstudianteNominaInlineForm(ModelForm):
    class Meta:
        model = EstudianteNomina

        fields = [
            'becado',
            'pago',
            'nomina',
            ]

        widgets = {
            'pago': EnclosedInput(append='icon-check'),
            }

    becado = EstudiantesNominaAdminSelect(
        label = 'Beneficiario',
        widget = AutoHeavySelect2Widget(select2_options={'width':'220px', 'minimumInputLength': 5})
        )


class NominaAdminForm(forms.ModelForm):
    class Meta:
    model = Nomina

    fields = [
            'tipo',
            'beneficio',
            'carrera_sedes',
            'pago',
            ]

    widgets = {
        'tipo': Select2Widget(select2_options={'width': '300px'}),
        'pago': EnclosedInput(append='icon-pencil'),
    }  

And my admin.py is:

class NominaInline(SortableTabularInline):
    form = EstudianteNominaInlineForm
    model = EstudianteNomina
    extra=1
    sortable = 'becado'
    verbose_name_plural = 'Estudiantes en nomina'

class NominaAdmin(SortableModelAdmin):
form = NominaAdminForm
inlines = (NominaInline,)

def suit_row_attributes(self, obj, request):

    css_class = {
        True: 'success',
        False: 'error',
    }.get(int(obj.activa))
    if css_class:
        return {'class': css_class}

search_fields=['tipo', 'fecha']
list_filter=['tipo', 'fecha']
list_display=['id','get_carrera','Tipo', 'fecha', 'Pago', 'activa']
exclude = ['beneficio','carrera_sedes']
actions = [CerrarNominas, Normal, Especial, GeneraAbonos, GeneraAbonosN, GeneraTarjetas, GeneraAbonosE, GeneraAbonosEN]


def get_carrera(self, obj):
    if  obj.carrera_sedes.all().count() == 0:
        return u'NO EXISTEN CARRERAS ASOCIADAS'
    else:
        carreras =''
        for carrera in obj.carrera_sedes.all():
            carreras += '  {'+str(carrera.carreras.codigo_interno)+' - '+str(carrera.carreras.nombre)+'}  '
        return carreras 
get_carrera.short_description = 'carreras'


def Tipo(self,obj):
    if obj.tipo=='0':
        return "NORMAL"
    else:
        return "ESPECIAL"
Tipo.short_description = 'nominas disponibles'

def Pago(self,obj):
    if obj.pago==None:
        return '400'
    else:
        return obj.pago
Pago.short_description = 'Pago'
admin.site.register(Nomina, NominaAdmin)

This is the result form (the add another button not has been found in form):

0

There are 0 best solutions below