python - 模型表格未保存
问题描述
我创建了一个模型表单,并希望在用户在模板中输入值并单击提交时保存数据。
我尝试按照教程来指导我。但是,表单似乎没有保存,我也没有被重定向到我指定的模板
这就是我在views.py 上的内容
class PaymentView(TemplateView):
template_name = 'classroom/teachers/app-student-dashboard.html'
def get(self, request):
paymentform = MentorPaymentForm()
return render(request, self.template_name, {'paymentform':paymentform})
def post(self, request):
paymentform = MentorPaymentForm(request.POST)
if paymentform.is_valid:
payment = paymentform.save(commit=False)
payment.user = request.user
payment.save()
address = paymentform.cleaned_data['address']
country = paymentform.cleaned_data['country']
invoice_name = paymentform.cleaned_data['invoice_name']
account_num = paymentform.cleaned_data['account_num']
bank_name = paymentform.cleaned_data['bank_name']
branch_code = paymentform.cleaned_data['branch_code']
paymentform = MentorPaymentForm()
return redirect('teachers:app-instructor-dashboard')
args = {'paymentform': paymentform, 'address': address,
'country': country, 'invoice_name': invoice_name,
'account_num': account_num, 'bank_name': bank_name,
'branch_code': branch_code}
return render(request, self.template_name, args)
表格.py
class MentorPaymentForm(forms.ModelForm):
class Meta:
model = Mentor
fields = ('address', 'country', 'invoice_name', 'account_num', 'bank_name', 'branch_code')
模型.py:
class Mentor(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='mentor')
COUNTRIES = (
('SA', 'South Africa'),
('NG', 'Nigeria'),
('KE', 'Kenya'),
('OT', 'Other')
)
address = models.CharField(max_length=500, null=True, blank=True)
country = models.CharField(max_length=30, choices=COUNTRIES)
invoice_name = models.CharField(max_length=200, null=False, blank=False)
account_num = models.IntegerField(default=1234)
bank_name = models.CharField(max_length=50, null=False)
branch_code = models.IntegerField(default=1234)
和我的模板:
<form id="edit-payment-details", method="post",enctype="multipart/form-data" class="form-horizontal">
{% csrf_token %}
<div class="form-group">
<label for="name" class="col-md-2 control-label">Name on Invoice</label>
<div class="col-md-6">
<div class="form-control-material">
<input type="text" class="form-control used" id="name" value="{{ paymentform.invoice_name }}">
{{ paymentform.invoice_name }}
<label for="invoice_name"></label>
</div>
</div>
</div>
<div class="form-group">
<label for="address" class="col-md-2 control-label">Address</label>
<div class="col-md-6">
<div class="form-control-material">
<textarea class="form-control used" id="address"> </textarea>
{{ paymentform.address }}
<label for="address">Address</label>
</div>
</div>
</div>
<div class="form-group">
<label for="country" class="col-md-2 control-label">Country</label>
...
<button type="submit" class="btn btn-success paper-shadow relative" data-z="0.5" data-hover-z="1" data-animated>Update Billing</button>
我注意到我有一个未应用的迁移,但是当我尝试运行迁移时,我收到错误消息:
Apply all migrations: admin, auth, classroom, contenttypes, sessions
Running migrations:
Applying classroom.0014_auto_20200120_1042...Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: UNIQUE constraint failed: new__classroom_mentor.id
更新
尝试解决运行迁移时出现的错误消息。我尝试删除所有迁移,然后运行 makemigrations 并再次迁移。我不再收到错误唯一约束失败错误。但是我仍然无法将表单的数据保存到我的数据库中
find . -path "*/migr
ations/*.py" -not -name "__init__.py" -delete
解决方案
推荐阅读
- java - 尝试将 Json 存储在 DB 中时,Ebean 'No service implementation found for SpiJsonService'
- php - Postgres 查询在“where”处或附近给出语法错误
- github - 使用 GitHub 使页面上线
- angular - 如何在 Angular 2+ 中基于组件创建模板?
- python-3.x - 在 igraph 上使用 cairo 绘图时出错:模块 'cairo' 没有属性 'Surface'
- join - awk 匹配/比较/每个文件中的 2 列(对于 2 个文件)
- geocoding - 您已超出此 API 的每日请求配额。甚至使用 api 密钥
- spring - 无法代理接口实现方法 [public final void AbstractTestNGSpringContextTests.setApplicationContext()]
- vba - 通过输入框输入的数字未链接到我在 B 列中的公式
- ruby - 如何使用 selenium 网格对 appium 运行并行测试?