2

对不起我的英语不好...

我有一个名为 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)没有检索任何字段,因此没有更多的表单字段。有人有什么建议吗?

4

1 回答 1

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',)
于 2013-05-17T12:10:34.160 回答