2009-09-28 3 views
1

У меня есть очень простая модель:сохранить метод в представлении

class Artist(models.Model): 
name = models.CharField(max_length=64, unique=False) 
band = models.CharField(max_length=64, unique=False) 
instrument = models.CharField(max_length=64, unique=False) 

def __unicode__ (self): 
    return self.name 

, что я использую в качестве модельной формы:

from django.forms import ModelForm 
from artistmod.artistcat.models import * 

class ArtistForm(ModelForm): 
class Meta: 
    model = Artist 

, но я не могу показаться, чтобы построить представление, сохранит данные формы в базе данных. В настоящее время я использую:

def create_page(request): 
    if request.method == 'POST': 
      form = ArtistForm(request.POST) 
      if form.is_valid(): 
        form.save() 
        return render_to_response('display.html') 
    else: 
      form = ArtistForm() 
    return render_to_response('create.html', { 
     'form': form, 
}) 

Может ли кто-нибудь помочь новичку?

+0

чем проблема с Посмотреть? (Предполагая, что это не отступы) –

+0

Сверху моей головы это выглядит просто отлично. Есть ли ошибка представления или вы не видите новый объект в БД? –

+0

, когда вы нажмете кнопку «Сохранить» на шаблоне, он отправит вас на display.html (как следует), но не сохраняет введенные данные в базу данных. – 2009-09-28 20:18:05

ответ

1

Видимо проблема возникла в моем шаблоне. Я использовал

<form action="display/" method="POST"> 

в отличие от

<form action="." method="POST"> 

также изменил мой HttpRequest объект из render_to_response в HttpResponseRedirect

истинные ошибки новичка, но по крайней мере, в настоящее время работает

+1

Рад, что вы это решили. Я лично предпочитаю 'action =" "', поэтому вы не теряете запрос на POST. – SmileyChris

+0

отличное примечание. не знал об этом. спасибо SC! – 2009-09-29 04:19:45

+0

Изменение формы 'action =" thanks/"' to 'action =" "' работало для меня. –