2016-09-21 4 views
0

ModelAdminDjango Set champ personnalisé dans la forme non nécessaire

class InstrumentAdmin(admin.ModelAdmin):  
    def get_form(self,request, obj=None, **kwargs): 
     if obj: 
      return UpdateForm 
     else: 
      return CreateForm 

Mise à jour le formulaire

class UpdateForm(forms.ModelForm): 
    connector = forms.ModelChoiceField(queryset=Connector.objects.all(), widget=forms.Select(attrs={'disabled':'disabled'}), initial='multiplate') 

    class Meta: 
     model = Instrument 
     fields = ['connector','name'] 

J'ai mis la valeur initiale du ChoiceField. Mais quand j'accède au changement du modèle et sauve, il m'indique "ce champ est exigé" pour le connecteur de champ.

Comment puis-je rendre le champ non obligatoire dans ce cas? Parce que ça aura toujours une valeur là-bas.

+0

Si elle aura toujours une valeur, alors elle * est * obligatoire, sûrement? –

+0

Oui, c'est la partie étrange. Peut vérifier la photo ci-dessous. http://s16.postimg.org/o25nng19h/Capture.png – soohan

+0

Si j'ai défini Required = False pour ModelChoiceField, la valeur initiale sera manquante. – soohan

Répondre

0

Corrections:

  1. initiale = pk au lieu du nom
  2. Ajouter requis = False
0

Le problème est avec vos attributs. Changement:

attrs={'disabled':'disabled'} 

à

attrs={'readonly':'readonly'} 

handicapés ne renvoient pas les données sur le serveur tout en fait readonly il.

+0

Utiliser attrs = {'readonly': 'readonly'} pour afficher les données. Mais la liste déroulante encore capable de changer en utilisant readonly – soohan

+0

La réponse sélectionnée de ceci répondrait que: http://stackoverflow.com/questions/8100351/how-to-make-a-dropdown-readonly-using-jquery –