2016-06-04 13 views
1

Ich habe Probleme beim Hinzufügen eines Platzhalterattributs in meinen Formularen. Ich mag einen Platzhalter hinzufügen, dass mein HTML aussehen machen:Hinzufügen eines Platzhalterattributs in Django-Formular

<input type="text" name="sample" placeholder="sample"> 

Gerade jetzt ist dies meine Codes aussehen.

Das ist meine Models:

from django.db import models 

class Sample(models.Model): 

    name = models.CharField("Name", max_length=120) 

und dies ist meine Formulare:

from django.forms import ModelForm, TextInput 
from .models import Sample 

class SampleForm(ModelForm): 

    class Meta: 
     INPUT_CLASS = 'form-control' 

     model = Sample 
     widgets = { 
      'name': TextInput(attrs={'class':INPUT_CLASS, 
            'placeholder':'Enter title here'}), 
     } 

Ansichten

def update(request): 

    sampleForm = SampleForm() 

    return render(request, 'sample/profile.html', 'form':sampleForm) 

In meinem bildet sich, wenn ich den Platzhalter enthalten Attribut es nicht funktioniert . Was sollte der beste Ansatz sein, damit dies funktioniert?

+0

Wie werden Sie das Formular-Rendering? Bitte geben Sie den entsprechenden Vorlagencode an. – solarissmoke

Antwort

0

in Form selbst, das funktioniert für mich immer

class SampleForm(ModelForm): 
    class Meta: 
     model = Sample 

    name = forms.CharField(
     label='Name', 
     widget=forms.TextInput(
      attrs={'class': 'form-control', 'placeholder': 'Enter title here'} 
     ) 
    ) 
+0

Warum funktioniert der ursprüngliche Code des OP nicht? – solarissmoke

+0

@solarissmoke Ich weiß es noch nicht – doniyor

1

Es ein bisschen spät, aber ich werde sowieso Chip. Ich habe versucht, dasselbe zu tun, ohne die im Formular verwendeten Widgets neu definieren zu müssen. Entdeckt, dass die folgenden Werke:

class ExampleForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     super(ExampleForm, self).__init__(*args, **kwargs) 

     # sets the placeholder key/value in the attrs for a widget 
     # when the form is instantiated (so the widget already exists) 
     self.fields['name_of_field'].widget.attrs['placeholder'] = 'random placeholder' 

EDIT: obwohl ich weiß, das ist nicht beantwortet Ihre Frage, warum Ihr Code funktioniert nicht ...