Python程序教程

您现在的位置是:首页 >  Django

当前栏目

django RelatedObjectDoesNotExist

django,RelatedObjectDoesNotExist
2025-03-13 21:27:18 时间

结论:

error:

RelatedObjectDoesNotExist

根据处理log,可查看处理源码【related_descriptors.py", line 421,in __get__】

File "D:\PycharmProjects\smsenv\lib\site-packages\django\db\models\fields\related_descriptors.py", line 421, in __get__
    raise self.RelatedObjectDoesNotExist(
master.models.corporation.Corporation.supplier.RelatedObjectDoesNotExist: Corporation has no supplier.

原因 & 対策:

1,model:OneToOneField

  parent:已登录(Corporation)

  child:未登录 (supplier)

2,処理

corporation:Corporation = Corporation.objects.get(pk=1)
supplier = corporation.supplier    # OneToOneField,supplier未登录时,出错
# 使用 supplier前,需要判定其是否存在

对策:

hasattr(corporation,'supplier')

 hasattr ( obj,  'related child name' )

if not hasattr(corporation, 'supplier'):
    raise SuspiciousOperation("仕入先見つかりません")

或者
if hasattr(corporation, 'supplier'):
    #後続処理
    pass

参照:Django document

详细:

表关系参照:

class Corporation(BaseModel):
    corporation_code = models.CharField(max_length=8, primary_key=True, verbose_name='法人コード')
    ・・・
class Supplier(BaseModel):
    corporation = models.OneToOneField(Corporation, on_delete=models.CASCADE, primary_key=True, verbose_name='法人コード')
    ・・・