【发布时间】:2020-11-30 10:12:54
【问题描述】:
我是 django 新手,我正在尝试通过表单将一些数据插入数据库,但在插入数据时出现错误。我该如何解决这个问题?
我有这些连接在一起的模型:
models.py
class Major(models.Model):
major_cd = models.IntegerField(primary_key=True)
description = models.CharField(max_length=100, blank=True, null=True)
class Meta:
managed = False
db_table = 'major'
class Percentages(models.Model):
# major_cd = models.IntegerField(primary_key=True)
major_cd = models.OneToOneField(
Major,
on_delete=models.CASCADE,
primary_key=True,
db_column='major_cd'
)
perc = models.FloatField()
class Meta:
managed = False
db_table = 'percentages'
这是我的发件人:
每个.html
<form id="addPercentage" action="">
<div class="form-group row">
<div class="form-group col-md-2">
<input class="form-control" type="number" name="major_cd" placeholder="Major Code" required min=1000 max=9999>
</div>
<div class="form-group col-md-2">
<input class="form-control" type="number" name="perc" placeholder="Percentage" required>
</div>
</div>
<div class="form-group col-md-2" style="padding-right: 2%;">
<button class="btn btn-info form-control" type="submit">ADD</button>
</div>
</form>
脚本:
$("form#addPercentage").submit(function() {
var majorCodeInput = $('input[name="major_cd"]').val().trim();
var perc_Input = $('input[name="perc"]').val().trim();
if (majorCodeInput && perc_Input) {
// Create Ajax Call
$.ajax({
type: 'POST',
url: '{% url "create-percentages" %}',
enctype: 'multipart/form-data',
data: {
'major_cd' : majorCodeInput,
'perc' : perc_Input,
},
dataType: 'json',
success: function (data) {
if (data.Perc) {
appendToPerTable(data.Perc); // Funcion to append data
}
}
});
} else {
alert("All fields must have a valid value.");
}
$('form#addPercentage').trigger("reset");
return false;
});
views.py:
class CreatePercentage(View):
def post(self, request):
major_cd = request.POST.get('major_cd', None)
perc = request.POST.get('perc', None)
obj = Percentages.objects.create(
major_cd = major_cd,
perc = perc,
)
Perc = {'major_cd':obj.major_cd,'perc':obj.perc }
data = {
'Perc': Perc
}
return JsonResponse(data)
错误:
ValueError:无法分配“'9999'”:“Percentages.major_cd”必须是“Major”实例。
提前致谢!
【问题讨论】:
-
major_cd需要实例,所以需要使用major_cd_id=major_cd。 -
你也应该好好看看 Django 的表单,它们让你做的事情更容易。
标签: python django django-models django-views django-forms