【发布时间】:2018-07-24 00:49:28
【问题描述】:
单击Submit 按钮时,我在CBV(UpdateView) 中使用表单的代码不会保存到数据库。我看不出有什么问题。
views.py
class BHA_UpdateView(UpdateView):
template_name = 'bha_test.html'
context_object_name = 'bha'
model = BHA_List
success_url = reverse_lazy('well_list')
pk_url_kwarg = 'pk_alt'
form_class = BHA_overall_Form
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
api = get_well_api(self.request)
context['single_well_bha_list'] = BHA_List.objects.filter(well=api)
return context
def form_valid(self, form):
self.object = form.save()
return super().form_valid(form)
models.py
class WellInfo(models.Model):
api = models.CharField(max_length=100, primary_key=True)
well_name = models.CharField(max_length=100)
status = models.CharField(max_length=100)
class BHA_List(models.Model):
well = models.ForeignKey(WellInfo, 'CASCADE', related_name='bha_list')
bha_number = models.CharField(max_length=100)
class BHA_overall(models.Model):
bha_number = models.ForeignKey(BHA_List, 'CASCADE', related_name='bha_overall')
drill_str_name = models.CharField(max_length=111)
depth_in = models.CharField(max_length=111)
bha_test.html
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" class='btn btn-primary' value="Submit">
</form>
forms.py
from django import forms
from contextual.models import BHA_overall
class BHA_overall_Form(forms.ModelForm):
class Meta():
model = BHA_overall
fields = '__all__'
所以有一个model = BHA_List,还有另一种形式是通过外键与模型相关的。表单字段将显示给用户,单击提交按钮后,它应该将用户输入保存到 DB,但它没有。怎么了?
【问题讨论】:
标签: django django-models django-forms django-views