繁体   English   中英

django.core.exceptions.ValidationError:['“TRUE”值必须是 True 或 False。']

[英]django.core.exceptions.ValidationError: ['“TRUE” value must be either True or False.']

我正在尝试通过我为此编写的脚本在 django ORM 中上传数据

    for index, row in df.iterrows():
        allocated = row['is_allocated']
        delivery_required_on = row['delivery_required_on']
        linked = row['linked']
        raised_by = row['raised_by']
        raised_for = Company.objects.get(pk=row['raised_for'])    ### double check
        rejected = row['is_rejected']
        reason = row['reason']
        remarks = row['remarks']
        created = row['created_at']
        owner = User.objects.get(pk=row['New owner'])  
        j = literal_eval(row['flows'])
        flows = []
        mobj = MaterialRequest.objects.create(owner=owner, is_allocated=allocated,
                                              delivery_required_on=delivery_required_on, linked=linked,
                                              raised_by=raised_by, raised_for=raised_for, is_rejected=rejected,
                                              reason=reason, remarks=remarks, created=created)

当数据类似于以下内容时,它运行正常: 在此处输入图像描述

但是一旦is_allocated达到False ,它就会显示以下错误: 在此处输入图像描述

django.core.exceptions.ValidationError:['“TRUE”值必须是 True 或 False。']

我找不到与此相关的内容

您的 model 的is_allocated属性似乎是 boolean。因此您应该为其分配一个 boolean 值。 但是数据框中的列值是字符串TRUEFALSE

替换这条线

allocated = row['is_allocated']

allocated = (row['is_allocated'] == 'TRUE')

可能有帮助。

如果您只有NoneTrue值,请也考虑False

这是因为您试图将字符串存储在 boolean 字段中。 一种解决方案是将您的字符串类型更改为 boolean。也许在您的代码中使用 function 可以解决您的问题:

def to_boolean(raw_value: str) -> bool:
    if not isinstance(raw_value, str):
        raw_value = str(raw_value)
    raw_value = raw_value.strip()
    return {'true': True, 'false': False}.get(raw_value.lower(), False)

然后在你的循环中使用它(你认为你的字段类型是布尔值的地方):

for index, row in df.iterrows():
    allocated = to_boolean(row['is_allocated'])
    delivery_required_on = row['delivery_required_on']
    linked = row['linked']
    raised_by = row['raised_by']
    raised_for = Company.objects.get(pk=row['raised_for'])    ### double check
    rejected = to_boolean(row['is_rejected'])
    reason = row['reason']
    remarks = row['remarks']
    created = row['created_at']
    owner = User.objects.get(pk=row['New owner'])  
    j = literal_eval(row['flows'])
    flows = []
    mobj = MaterialRequest.objects.create(owner=owner, is_allocated=allocated,
                                          delivery_required_on=delivery_required_on, linked=linked,
                                          raised_by=raised_by, raised_for=raised_for, is_rejected=rejected,
                                          reason=reason, remarks=remarks, created=created)

暂无
暂无

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

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