Reputation: 153
I am trying to save form data to DB but it is not getting saved. I am not getting any errors as well. Here is my form.py:
def create_lead(request):
form = LeadForm()
if request.method == 'POST':
form = LeadForm(request.POST)
print(form.data)
if form.is_valid():
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
age = form.cleaned_data['age']
city = form.cleaned_data['city']
country = form.cleaned_data['country']
email = form.cleaned_data['email']
status = form.cleaned_data['status']
agent = form.cleaned_data['agent']
avatar = form.cleaned_data['avatar']
lead = Lead(
first_name=first_name,
last_name=last_name,
age=age,
city=city,
country=country,
email=email,
status=status,
agent=agent,
avatar=avatar
)
lead.save()
return redirect('/all')
return render(request, 'create.html', {'form': LeadForm})
I even tried to create a model directly as mentioned here: HTML form data not saved in database - django but it did not help.
def create_lead(request):
form = LeadForm()
if request.method == 'POST':
form = LeadForm(request.POST)
print(form.data)
if form.is_valid():
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
age = form.cleaned_data['age']
city = form.cleaned_data['city']
country = form.cleaned_data['country']
email = form.cleaned_data['email']
status = form.cleaned_data['status']
agent = form.cleaned_data['agent']
avatar = form.cleaned_data['avatar']
Lead.objects.create(
first_name=first_name,
last_name=last_name,
age=age,
city=city,
country=country,
email=email,
status=status,
agent=agent,
avatar=avatar
)
return redirect('/all')
return render(request, 'create.html', {'form': LeadForm})
Here is my forms.py:
class LeadForm(forms.ModelForm):
class Meta:
model = Lead
fields = '__all__'
Here is the model:
class Lead(models.Model):
lead_status = (
('Potential', 'Potential'),
('Prospect', 'Prospect'),
('Negotiation', 'Negotiation'),
('Converted', 'Converted'),
('Failed', 'Failed')
)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
age = models.IntegerField(default=0)
city = models.CharField(max_length=25, null=True)
country = models.CharField(max_length=30, null=True)
email = models.EmailField(max_length=50, null=True)
agent = models.ForeignKey('Agent', on_delete=models.CASCADE, null=True)
status = models.CharField(max_length=15, choices=lead_status, null=True)
avatar = models.ImageField(null=True, upload_to='media')
def __str__(self):
return self.first_name
Here is the HTML
<form method="POST" action="." enctype="multipart/form-data">
{% csrf_token %}
{{form.as_p}}
<button type="submit">Submit</button>
</form>
Upvotes: 0
Views: 191
Reputation: 1398
You are saving a file, so you have to add request.FILES
to your form as well.
form = LeadForm(request.POST, request.FILES)
Upvotes: 1