Tom
Tom

Reputation: 2661

Input in forms not getting through in Django

I'm following Mike Hibbert's tutorial on links. The site works perfectly fine, however, the input I put in the form is not being updated or transmitted in the database.

from forms import LocationForm
from django.http import HttpResponseRedirect
from django.core.context_processors import csrf
from django.shortcuts import render_to_response
from django.http import HttpResponse
from core.models import Location
from django.shortcuts import render

class LocationListView(ListView):

  model = coremodels.Location
  template_name='location/list.html'

def create2(request): 
  if request.method =='POST':
    form = LocationForm(request.POST)
    if form.is_valid():
      form.save

      return HttpResponseRedirect('/location/')
  else:
    form = LocationForm()

  args = {}
  args.update(csrf(request))

  args['form'] = form

  return render_to_response('location/create_location.html', args)

my models.py

class Location(models.Model):
    title = models.CharField(max_length=300)
    description = models.TextField(null=True, blank=True)
    address = models.TextField(null=True, blank=True)
    hours = models.TextField(null=True, blank=True)

my create_location.html:

{% block sidebar %}
<ul>
<li> <a href ="/location/">Cancel</a></li>
</ul>
{% endblock  %}

<form action="" method="post"> {% csrf_token %}
<ul>
{{form.as_ul}}
</ul>

and finally my forms.py

from django import forms
from models import Location

    class LocationForm (forms.ModelForm):

        class Meta:
            model = Location
            fields =('title', 'description', 'address')

    <input type="submit" name="submit" value="create location">
    </form>

No error or anything, site works perfect, however if I click on create new location and try submit a new location on the create_location.html it goes back to the locations (list.html) but without the new one.

I also tried updating the views with the code from the documentation

 return render(request, 'location/create_location.html',{'form': form})

but didn't work.

What do I do wrong?

Thanks in advance

Upvotes: 0

Views: 45

Answers (1)

user707650
user707650

Reputation:

def create2(request): 
  if request.method =='POST':
    form = LocationForm(request.POST)
    if form.is_valid():
      form.save

You're not calling form.save(), you're just "stating" the function name (which here does nothing).

Use

def create2(request): 
  if request.method =='POST':
    form = LocationForm(request.POST)
    if form.is_valid():
      form.save()

and you should be good to go.

Upvotes: 2

Related Questions