【问题标题】:Cannot import form_for_model [duplicate]无法导入 form_for_model [重复]
【发布时间】:2015-10-22 07:46:43
【问题描述】:

这是forms.py

谁能告诉我为什么我无法导入 form_for_model 我是否假设 form_for_model 是内置的?

from django import forms
from models import Publisher
from django.forms import form_for_model
PublisherForm = form_for_model(Publisher)
TOPIC_CHOICES = (
      ('general', 'General enquiry'),
      ('bug', 'Bug report'),
      ('suggestion', 'Suggestion'),
      )
class ContactForm(forms.Form):
           topic = forms.ChoiceField(choices=TOPIC_CHOICES)
           message = forms.CharField(widget=forms.Textarea())
           sender = forms.EmailField(required=False)
           def clean_message(self):
                     message = self.clean_data.get('message', '')
                     num_words = len(message.split())
                     if num_words < 4:
                         raise forms.ValidationError("Not enough words!")
                     return message

【问题讨论】:

  • 您从哪里得到使用form_for_model 的想法?它在 9 个 版本前被删除。
  • 我正在关注一本旧书 pdf 。现在我正在关注 Django 在线文档。我得到了解决方案。

标签: python django django-forms


【解决方案1】:

form_for_model 已折旧,请改用ModelForm

from django.forms import ModelForm
class ContactForm(ModelForm):
       topic = forms.ChoiceField(choices=TOPIC_CHOICES)
       ....

您可以在以下位置找到文档: https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#django.forms.ModelForm

【讨论】:

  • 对不起,我在关注旧书。所以我遇到了这个问题。现在我得到了解决方案
  • 很高兴你解决了这个问题!
【解决方案2】:

form_for_model 已删除,您应该改用 ModelForm
check this already removed

from django.forms import ModelForm
from myapp.models import Publisher
....
....
# Create the form class.
class ContactForm(forms.Form):
           topic = forms.ChoiceField(choices=TOPIC_CHOICES)
           message = forms.CharField(widget=forms.Textarea())
           sender = forms.EmailField(required=False)
....
....

【讨论】:

  • 谢谢兄弟,这是确切的解决方案
  • 没问题!乐于助人
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2020-12-31
  • 1970-01-01
  • 2016-04-07
  • 2011-05-06
  • 2018-10-18
相关资源
最近更新 更多