我正在尝试保存多个数据字段。我还将数据库连接从默认的SQLITE3更改为MySQL。而且我不知道该怎么做
这是我的Views.py
def customerview(request):
if request.POST:
form = CustomerForm(request.POST)
if form.is_valid():
if form.save():
return redirect('sales')
else:
return redirect('index')
else:
return redirect('index')
else:
form = CustomerForm
return render(request, 'customer.html', {'form':form})
def salesview(request):
if request.POST:
form = SalesForm(request.POST)
if form.is_valid():
if form.save():
return redirect('index')
else:
return redirect('index')
else:
return redirect('index')
else:
form = SalesForm
data = Customer.objects.latest('id')
return render(request, 'sales.html', {'form':form, 'range':range(data.number_of_transactions)})
这是我的模型
class Customer(models.Model):
customer_name = models.CharField(max_length=200)
number_of_transactions = models.IntegerField()
class Sales(models.Model):
product_type = models.CharField(max_length=100)
product_code = models.CharField(max_length=100)
product_size = models.CharField(max_length=100)
product_quantity = models.IntegerField()
这是我的品牌。html
<form class="form" role="form" action="" method="post"> {% csrf_token %}
{% for i in range %}
<div class="col">
<div class="col-sm-3">
<div class="">
{{ form.product_type | add_class:'form-control' }}
<label for="regular2">Product Type</label>
</div>
</div>
<div class="col-sm-3">
<div class="">
{{ form.product_code | add_class:'form-control' }}
<label for="regular2">Product Code</label>
</div>
</div>
</div>
{% endfor %}
<div class="col-md-12">
<hr>
<div class="card-actionbar-row">
<input type="submit" class="btn btn-flat btn-primary ink-reaction" value="SUBMIT">
</div>
</div>
</form>
这个想法是要获取客户详细信息和要执行的交易数量,然后确定要在销售视图中显示的字段数。而且效果很好。问题是要将每个交易保存在数据库中。当我提交并检查数据库表时,仅保存一项交易。
很明显,您要在可以走到这里之前要运行。
首先,您应该集中精力使一个简单的列表视图工作,而不会对在表单视图中显示列表涉及的其他复杂性感到困惑。因此,使您的视图从listView继承,然后删除所有方法。然后修复模板,以便它通过stock_list
或object_list
迭代,而不仅仅是stock
。
其次,一旦完成了工作,就可以尝试将其与表格集成在一起。当您这样做时,请了解覆盖哪些方法。 get_queryset
必须返回QuerySet,它不应呈现模板。无论如何,您几乎不需要在基于类的视图中手动渲染模板,因为现有逻辑将为您做到这一点。而且,如果您想在创建视图中的模板上下文中添加QuerySet,则应覆盖get_context_data
;需要返回字典。
第三,如果在某个时候您 do 需要手动渲染模板,请阅读文档以了解参数的顺序到render
:它是request, template_name, context
,而不是您所拥有的。