簡體   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