2017-05-12 54 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