Reputation: 59
I would like to add a form on my website for the firms to list themselves. It's a kind of local business directory that I wanted to build up with Django. But when I try to show the form on my "add-business" page I get 2 different results.
The first result is: if I use {{ form.as_p }}
it doesn't show the form.
The second result is: if I try to build the form with my own html inputs, it says object() takes no parameters
, pointing at request.post
within my view (form = AddBusinessForm(request.POST)
) which you can see below.
I don't know what is wrong. My view is the same as the Django docs.
My Model :
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)
My Form:
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')
My Url :
url(r'add-business/$',views.add_business, name='add_business'),
My View:
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})
Upvotes: 2
Views: 689
Reputation: 308779
Your model form should be a subclass of forms.ModelForm
:
class AddBusinessForm(forms.ModelForm):
Upvotes: 3