2017-05-12 58 views
0

歡迎各界朋友如何保存的Django模型的形式,香脆,我無法將數據保存到數據庫

我需要你的幫助。

我無法從表單中將數據保存到我的數據庫。

這當然可能很簡單,但我不知道該怎麼做。

urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.product_list, name='product_list'), 
    url(r'^busy/', views.product_busy, name='product_busy'), 
] 

models.py

from django.db import models 
from django.core.urlresolvers import reverse 

class Busy(models.Model): 
    name = models.CharField(max_length=200, db_index=True) 
    slug = models.SlugField(max_length=200, db_index=True) 


    class Meta: 
     ordering = ('name',) 
     index_together = (('id', 'slug'),) 
     verbose_name = 'busy' 
     verbose_name_plural = 'busy' 

    def __str__(self): 
     return self.nazwa 

    def get_absolute_url(self): 
     return reverse('konfigurator:product_busy', 
         args=[self.id, self.slug]) 

forms.py

from django import forms 
from django.utils.translation import ugettext_lazy as _, ugettext  
from crispy_forms import layout, bootstrap 
from crispy_forms.helper import FormHelper 
from crispy_forms.layout import Layout, Fieldset, ButtonHolder, Submit, MultiField, Div, Field, Button 
from .models import Busy 

class Konfig(forms.ModelForm): 
    class Meta: 
     model = Busy 
     fields = ['name','slug'] 

    def __init__(self, *args, **kwargs): 
     super(Konfig, self).__init__(*args, **kwargs) 

     self.helper = FormHelper() 
     self.helper.form_action = "." 
     self.helper.form_method = "POST" 
     self.helper.form_class = 'order-form' 

     self.helper.layout = layout.Layout(
      layout.Fieldset(
       _("XXX"), 
       layout.Field("name"), 
       layout.Field("slug"), 
      ), 

      bootstrap.FormActions(
       layout.Submit("submit", _("Send"), 
          css_class="right"), 
      ) 
     ) 

views.py

from django.shortcuts import render, get_object_or_404 
from .models import Busy 
from django.shortcuts import render 
from .forms import Konfig 
from django.conf import settings 
from django.http import HttpResponse 
from django.template.loader import render_to_string 

def product_list(request): 
    return render(request,'konfig/product/list.html') 

def product_busy(request): 
    return render(request,'konfig/product/busy.html', {'form': Konfig()}) 

def konfig(request): 
    form = Konfig() 
    return render(request, "konfig/product/busy.html", {'form': form}) 

busy.html

{% extends "konfig/base.html" %} 
{% load crispy_forms_tags %} 
{% crispy konfig_form konfig_form.helper %} 

{% block title %} 
    XX 
{% endblock %} 

{% block content %} 
    <div class="order-info2"> 
     {% crispy form %} 
    </div> 

{% endblock %} 

如何解決問題?

我將不勝感激您的幫助。

UPDATE views.py

def konfig(request): 
    if request.method == 'POST': 
     form = Konfig(request.POST) 
     if form.is_valid(): 
      name = form.save() 
      name.save() 
      name = Busy.objects.create(name=name) 
      return render(request, 
          'konfig/product/busy.html', 
          {'name': name}) 
    else: 
     form = Konfig() 
    return render(request, 
        'konfig/product/busy.html', 
        {'form': form}) 

我嘗試,但它仍然無法正常工作。 可能與Context處理器有關。

回答

2

您正在初始化您的表單,沒關係,但您不接受POST請求中的任何內容。

如果你在django閱讀更多關於http請求的信息,那會更好。

無論如何,我會做這樣的事情...

def konfig(request): 
    if request.method == "POST": 
     form = Konfig(request.POST) 
     if form.is_valid(): 
      form.save() 
    else: 
     form = Konfig() 
    return render (request, 'your_template', {'form':form}) 
+0

它看起來很棒。不幸的是它不起作用。也許與Context處理器有關。你怎麼看 ? – Kuba

+0

你得到的錯誤是什麼?你可以編輯帖子的錯誤信息.. – zaidfazil

+0

也form.save()就足夠了。之後的陳述完全沒有必要。重定向到url'profile_busy'是錯誤的,bcz url不需要任何關鍵字參數。 kwargs {}是不需要的。 – zaidfazil