ValueError:无法赋值.必须是Django中的一个实例



我是django的新手,我试图通过表单将一些数据插入数据库,但在插入数据时出错。我该如何解决这个问题?

我有这些模型连接在一起:

型号.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'

这是我的发件人:

per.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’":"百分比.major_cd";必须是";少校";例子

提前感谢!

obj = Percentages.objects.create(
major_cd =  major_cd,
perc = perc,
)

当你这样做时,major_cd是字符串";9999";,它应该是CCD_ 2实例。因此,如果您确定major_cd实例存在,则必须执行以下操作:

obj = Percentages.objects.create(
major_cd =  Major.objects.get(major_cd=int(major_cd)),
perc = perc,
)

最新更新