繁体   English   中英

ValueError:无法分配必须是 Django 中的实例

[英]ValueError: Cannot assign must be an instance in 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;
});

视图.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”必须是“主要”实例。

提前致谢!

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

当你这样做时, major_cd是字符串“9999”,它应该是一个Major实例。 所以你必须这样做,如果你确定major_cd 实例存在:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM