ModelForm有空字段列表

时间:2013-05-17 11:57:16

标签: django

抱歉我的英语不好......

我有一个名为Habitation的模型:

class Habitation(models.Model):
propr = models.ForeignKey(Client, related_name="proprietaire")
locat = models.ForeignKey(Client, related_name="locataire", null=True, blank=True)
etage = models.CharField(max_length=2, blank=True)
numero = models.CharField(max_length=3, blank=True)
ad1 = models.CharField(max_length=64)
ad2 = models.CharField(max_length=64, blank=True)
cp = models.CharField(max_length=5)
ville = models.CharField(max_length=32)

def get_appareils(self):
    return Appareil.objects.filter(habitation=self)

def selflink(self):
    if self.id:
        return '<a href="/admin/client/habitation/%s" target="_blank">Editer</a>' % str(self.id)
    else:
        return 'Indéfini'
selflink.allow_tags = True

def __unicode__(self):
    return u'%s - %s %s' % (self.ad1, self.cp, self.ville)

用他的编辑视图:

def edit(request, habitation_id):
habitation = Habitation.objects.get(pk=habitation_id)

if request.POST:
    form = HabitationForm(request.POST, instance=habitation)
    if form.is_valid():
        form.save()
        return redirect('clients')
else:
    form = HabitationForm(instance=habitation)

print form.fields

return render_to_response('habitations/edit.html', {
                                                    'habitation_id': habitation_id,
                                                    'form': form,
                                                    }, context_instance=RequestContext(request))

和他的模板:

<table>
    <form action="/habitations/edit/{{ habitation_id }}/" method="post">
        {{ form }}
        {% csrf_token %}
        {{ form.as_table }}
    </form>
</table>

形式:

from django import forms 
from client import models 
class HabitationForm(forms.ModelForm): 
    class meta: 
        model = models.Habitation 
        fields = ('propr', 'locat', 'etage', 'numero', 'ad1', 'ad2', 'cp', 'ville',)

我的视图(或我的ModelForm)不会检索任何字段,因此不再有表单字段。 有人有什么建议吗?

1 个答案:

答案 0 :(得分:2)

表单中的元类名称应为Meta而不是meta

将表单更新为

from django import forms 
from client import models 
class HabitationForm(forms.ModelForm): 

    class Meta:  #<---- define with capital M
        model = models.Habitation 
        fields = ('propr', 'locat', 'tegae', 'numero', 'ad1', 'ad2', 'cp', 'ville',)