前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django RelatedObjectDoesNotExist

django RelatedObjectDoesNotExist

原创
作者头像
刀枪不入de王二花
发布2022-09-26 11:35:38
3370
发布2022-09-26 11:35:38
举报
文章被收录于专栏:BETTERBETTER

结论:

error:

RelatedObjectDoesNotExist

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

代码语言:javascript
复制
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,処理

代码语言:python
代码运行次数:0
复制
corporation:Corporation = Corporation.objects.get(pk=1)
supplier = corporation.supplier    # OneToOneField,supplier未登录时,出错
# 使用 supplier前,需要判定其是否存在

对策:

hasattr(corporation,'supplier')

 hasattr ( obj,  'related child name' )

代码语言:python
代码运行次数:0
复制
if not hasattr(corporation, 'supplier'):
    raise SuspiciousOperation("仕入先見つかりません")

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

参照:Django document

详细:

表关系参照:

代码语言:javascript
复制
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='法人コード')
    ・・・

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 结论:
    • error:
      • 原因 & 対策:
        • 对策:
        • 详细:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档