【发布时间】:2020-11-05 11:28:47
【问题描述】:
我一直在尝试使用 Ajax 在我的 Django 应用程序中发布相关模型中的记录。为了更新一对父/子模型,我使用以下视图,并且记录保存在相应的模型中。 但是,我不断收到以下错误:
AttributeError: 'ModelFormOptions' 对象没有属性 'concrete_model'"
以下是设置:
views.py
>class MatListCreateView(LoginRequiredMixin, CreateView):
template_name = "..."
model = MatHdrList
form_class = CreateMatHdrListForm
def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
mat_bom_list = CreateBomMatListFormset
return self.render_to_response(
self.get_context_data(form=form, mat_bom_list=mat_bom_list)
)
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
mat_bom_list = CreateBomMatListFormset(self.request.POST)
if self.request.is_ajax and self.request.method == "POST":
if form.is_valid() and mat_bom_list.is_valid():
form.instance.created_by = self.request.user
self.object = form.save()
mat_bom_list.instance = self.object
mat_bom_list.save()
ser_instance = serializers.serialize('json', [ form, mat_bom_list, ])
return JsonResponse({"instance": ser_instance}, status=200)
else:
return JsonResponse({"error": form.errors}, status=400)
return JsonResponse({"error": "Whoops"}, status=400)
模板(jQuery ajax 部分)
$('#materialListForm').submit(function(e) {
e.preventDefault();
var serializedData = $(this).serialize();
console.log(serializedData);
// var url1 = "{% url 'matl_list' %}";
$.ajax({
url: "{% url 'material_list_create' %}",
type: 'POST',
data: serializedData,
success: function() {
console.log('Data Saved');
// window.location = url1;
},
error: function (response, status, error) {
console.log('Problem encountered');
alert(response.responseText);
}
});
});
在发布(表单提交)警报时显示AttributeError: 'ModelFormOptions' object has no attribute 'concrete_model'。关闭 alert 不会退出页面(即使在 ajax 调用中使用 window.location)。回到调用页面(即对象 listview)显示记录已添加到父模型和子模型中。
有人可以提出一种消除上述错误的方法吗?
【问题讨论】:
标签: jquery django ajax attributeerror