Джанго модель формы - PullRequest
       23

Джанго модель формы

1 голос
/ 03 сентября 2011

У меня очень простая форма модели, но по какой-то причине код не может синхронизировать и выдает ошибку: AttributeError: у объекта 'module' нет атрибута 'CharField'

код выглядит следующим образом (в моем 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')

Включен расширенный код: http://dpaste.com/607823/

Интересно, в чем может быть проблема: FileField в модели формирует syncdb правильно, но другойполя: CharField, IntegerField и EmailField, похоже, не работают.Я прочитал django docs в модельной форме, и я не могу найти ничего особенно связанного с этой ошибкой.

Любые предложения будут очень полезны.

Ответы [ 2 ]

5 голосов
/ 03 сентября 2011

Вы на самом деле не импортируете модуль форм.

>>> from django.forms import forms
>>> forms.CharField
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'module' object has no attribute 'CharField'
>>> from django import forms
>>> forms.CharField
<class 'django.forms.fields.CharField'>

Итак, вы хотите изменить ваш импорт следующим образом:

from django import forms

Затем, чтобы сослаться на ModelForm:

class SubmitJobForm(forms.ModelForm):
0 голосов
/ 10 марта 2017

Вы можете использовать в верхней части forms.py

из форм импорта django.forms
вместо этого использовать
из форм импорта django

...