2017-04-06 41 views
1

我想在我的网站上添加一个表单供公司自行列出。这是我想用Django构建的一种本地商业目录。但是,当我尝试在我的“添加业务”页面上显示该表单时,我得到2个不同的结果。django表单不显示或对象不需要参数错误

第一个结果是:如果我使用{{ form.as_p }}它不显示窗体。

第二个结果是:如果我试图用我自己的HTML投入建设的形式,它说object() takes no parameters,我的观点(form = AddBusinessForm(request.POST)),你可以看到下面内的request.post指向。

我不知道什么是错的。我的观点与Django文档相同。

我的模型:

class Firma(models.Model): 
    user = models.ForeignKey(User, on_delete=models.CASCADE) 
    firm_name = models.CharField(max_length=120) 
    firm_adress = models.CharField(max_length=200) 
    firm_city = models.CharField(max_length=100) 
    firm_desc = models.TextField(max_length=2000) 
    firm_email = models.EmailField(max_length=80, unique=True,validators=[validate_email, ]) 
    firm_phone = models.CharField(max_length=20) 
    firm_website = models.CharField(max_length=60, validators=[URLValidator()]) 
    firm_add_date = models.DateTimeField(auto_now_add=True) 
    firm_last_edited = models.DateTimeField(auto_now=True) 
    status_firm = models.CharField(max_length=40, default='Active') 
    status_site = models.CharField(max_length=40, default='Pending') 
    slug = models.SlugField(max_length=140, unique=True) 

我的表格:

class AddBusinessForm(): 
    firma_name = forms.CharField(max_length=80, required=True, help_text='Required.') 
    firm_adress = forms.CharField(max_length=150, required=True, help_text='Required.') 
    firm_city = forms.CharField(max_length=50, required=True, help_text='Required.') 
    firm_desc = forms.CharField(widget=forms.Textarea, required=True, help_text='Required. About Your Company') 
    firm_email = forms.EmailField(max_length=80, required=True, help_text='Required. Please write a valid email') 
    firm_phone = forms.CharField(max_length=150, required=True, help_text='Required.') 
    firm_website = forms.CharField(max_length=80, required=True, help_text='Required.') 

    class Meta: 
     model = Firma 
     fields = ('firm_name', 'firm_adres','firm_city', 
       'firm_desc','firm_email','firm_telefon','firm_website') 

我的网址:

url(r'add-business/$',views.add_business, name='add_business'), 

笔者认为:

def add_business(request): 

    if request.method == 'POST': 
     form = AddBusinessForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect('memberships/dashboard') 
    else: 
     form = AddBusinessForm() 
    return render(request, 'directory/add-business.html', {'form': form}) 

回答

1

您的模型形式应该是forms.ModelForm一个子类:

class AddBusinessForm(forms.ModelForm): 
+0

正如我曾经看过/阅读是为UserCreationForm或UserChangeForm我错过了部分的所有教程。即使从未想过像这样连接模型和表单。非常感谢。 – demyr