我有一个很简单的模型的形式,但由于某些原因,该代码不能执行syncdb和引发错误:AttributeError的:“模块”对象没有属性“CharField”django的模型形式
的代码如下(在我的models.py):
from django.db import models
from django.forms import ModelForm, Textarea, forms
from django.forms.fields import DateField, ChoiceField, MultipleChoiceField
class SubmitJobDTP(models.Model):
SERVICE_CHOICES = (
('blog', (
('DTP1', 'cccccccccccccccccc: GBP 65.00'),
('DTP2', 'vvvvvvvvvvvvvvvvvv: GBP 110.00'),
('DTP3', 'bbbbbbbbbbbbbbbbbb: GBP 175.00'))
)
)
package = models.CharField(max_length=5, choices=SERVICE_CHOICES)
firstname = models.CharField(max_length=25)
lastname = models.CharField(max_length=25)
contact_number = models.CharField(max_length=25)
email_address = models.EmailField()
attachment_1 = models.FileField(upload_to='uploadir')
attachment_2 = models.FileField(upload_to='uploadir')
attachment_3 = models.FileField(upload_to='uploadir')
attachment_4 = models.FileField(upload_to='uploadir')
attachment_5 = models.FileField(upload_to='uploadir')
comments = models.CharField(max_length=150)
class SubmitJobForm(ModelForm):
attachment_1 = forms.FileField(label='Attach file 1',required=False)
attachment_2 = forms.FileField(label='Attach file 2',required=False)
attachment_3 = forms.FileField(label='Attach file 3',required=False)
attachment_4 = forms.FileField(label='Attach file 4',required=False)
attachment_5 = forms.FileField(label='Attach file 5',required=False)
package = forms.CharField(required=False)
firstname = forms.CharField(required=False)
lastname = forms.CharField(required=False)
contact_number = forms.IntegerField(required=False)
email_address = forms.EmailField(required=False)
class Meta:
model = SubmitJobDTP
fields = ('package', 'first name', 'last name', 'contact_number',
'email_address', 'comments', 'attachment_1', 'attachment_2',
'attachment_3', 'attachment_4', 'attachment_5')
一个dpasted代码是:http://dpaste.com/607823/
我不知道这个问题可能是什么:FileField或在的ModelForm执行syncdb的正确,但其他领域:CharField,IntegerField和EmailField似乎不起作用。我已经阅读了模型表单上的django文档,我似乎无法找到与此错误特别相关的任何内容。
任何建议都会大大增加。
我建议读了(https://docs.djangoproject.com/en/dev/ref/django-admin/#syncdb)什么'syncdb'确实 - 它不会触摸'ModelForm'类,它会创建由'django.db.models.Model'子类定义的表。尝试运行'./manage.py shell'或任何其他管理命令,你会发现你的代码中有一个import语法错误,'from django.forms import ModelForm,Textarea,forms' –
@James,你正在使用表单。 ModelForm旨在最大限度地减少必须编写的自定义代码的数量。通过声明模型中已经存在的每个字段,您正在有效地创建一个标准表单。阅读更多关于ModelForms,并节省您的时间和错误。 –