【发布时间】:2019-11-26 12:56:39
【问题描述】:
我正在尝试从 django 中的模态表单向数据库添加一些数据。填写完所有字段并单击提交后,它不会保存在数据库中。这是模型、视图和表单以及模板。我认为问题出在views.py上
models.py
class Buyer(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=255)
phone_numbers = ArrayField(PhoneNumberField())
industry = models.IntegerField(null=True)
credit_limit = MoneyField(max_digits=20, decimal_places=2,
default_currency='MMK', null=True)
is_active = models.BooleanField(default=True)
datetime_created = models.DateTimeField(auto_now_add=True)
datetime_updated = models.DateTimeField(auto_now=True)
views.py
class BuyerCreateView(AtomicMixin, View):
template_name = 'add_buyer_modal.html'
def get(self, request):
form = BuyerForm()
return render(request, self.template_name, {'form': form})
def post(self, request):
form = BuyerForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Buyer created!', extra_tags='alert alert-success')
return HttpResponseRedirect(self.request.META.get('HTTP_REFERER'))
messages.error(request, 'Unable create buyer. {}'.format(form.errors), extra_tags='alert alert-danger')
return HttpResponseRedirect(self.request.META.get('HTTP_REFERER'))
forms.py
class BuyerForm(forms.ModelForm):
class Meta:
model = Buyer
fields = ['name', 'phone_numbers', 'industry', 'credit_limit']
模板
<div class="modal fade" id="add-buyer-modal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">New Buyer</h5>
<button type="button" data-dismiss="modal" aria-label="Close" class="close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="col-md-12 modal-body">
<form id="buyer-form" method="post" class="submit-form" action="{% url 'buyers:add_buyer' %}">
{% csrf_token %}
<div class="col-md-12">
<div class="form-group label-floating">
<label class="control-label">Name</label>
<input autocomplete="false" type="text" name="name" class="form-control" required>
</div>
</div>
<div class="col-md-12">
<div class="form-group label-floating">
<label class="control-label">Industry</label>
<div class="input-group">
<input autocomplete="false" type="number" name="industry" class="form-control" required>
</div>
</div>
</div>
<input id="payment-submit" type="submit" class="btn btn-primary pull-right submit-button" />
</form>
</div>
</div>
</div>
urls.py
urlpatterns = [
url(r'^$', buyers_views.BuyerListView.as_view(), name='buyers_list'),
url(r'^(?P<id>[0-9a-f-]+)/$',
buyers_views.BuyerDetailView.as_view(), name='buyers_detail'),
url(r'^/buyer/add/', buyers_views.BuyerCreateView.as_view(), name='add_buyer'),
]
【问题讨论】:
-
你能把你的模板
add_buyer_modal.html也发一下吗? -
当然,我编辑了问题
-
我看到表单指向
buyers:add_buyer,您确定该网址实际上链接到视图吗? -
是的.. 你可以在我现在发布的 urls.py 上看到它
-
我认为您不会在模板上渲染绑定的
BuyerForm。POST的内容是什么?