以前はこのコードを使用していましたが、正常に機能し、別のメンバーから ModelForm を使用するように提案されました。form.is_valid() 関数などを使用するのは理にかなっています。試してみることを考えました。
私はインターネットで他の例をいくつか試しましたが、私のものは何らかの理由で機能していないようです。または、正しく行っていない可能性があります。ビューでフォームを印刷すると次のようになり、elseステートメントに移動します、だから私のフォームは保存されません
<input id="id_product" type="text" name="product" value="aassddf" maxlength="250" />
FAIL
私のモデル.py
from django.db import models
from django.forms import ModelForm
class Category(models.Model):
name = models.CharField(max_length=250)
def __unicode__(self):
return self.name
class Product(models.Model):
category = models.ForeignKey(Category)
product = models.CharField(max_length=250)
quantity = models.IntegerField(default=0)
price = models.FloatField(default=0.0)
def __unicode__(self):
return self.product
class ProductForm(ModelForm):
class Meta:
model = Product
私のviews.py
from models import *
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
def index(request):
...
...
def add_product(request):
if request.method == 'POST':
form = ProductForm(request.POST)
print form['product']
if form.is_valid():
form.save()
return HttpResponseRedirect('/product')
else:
print 'FAIL'
return HttpResponseRedirect('/product')
私のhtml
<form method="post" action="add_product/">
{% csrf_token %}
<label for="category">Category</label>
<select name="category" id="category">
{% for category in category_list %}
<option> {{ category.name }} </option>
{% endfor %}
</select>
<label for="product">Product</label>
<input type="text" name="product" id="product">
<label for="quantity">Quantitiy</label>
<input type="text" name="quantity" id="quantity">
<label for="price">Price</label>
<input type="text" name="price" id="price">
<input type="submit" value="Add New product" id="create">
</form>
ModelForms を使用してデータを保存するより良い方法はありますか?? 助けてくれてありがとう。