如果反向关系不存在,为什么 Django 会停止执行?

安德留斯·盖奇斯

我有一个常见的情况:一个 User 模型和一个 Employee 模型,它们通过 user_id 上的一对一关系与 User 相关。我的用户模型是定制的,其中一种定制是“is_employee”方法:

class User(AbstractUser):
    def is_employee(self):
        print(self.id)
        print(self.employee is not None)
        return self.employee is not None
    is_employee.boolean = True
    is_employee.short_description = _('Employee status')


class Employee(AddressMixin, models.Model):
    user        = OneToOneField(User, 
                                primary_key=True, 
                                related_name='employee',
                                on_delete=CASCADE)
    phone_no    = models.CharField(max_length=20, 
                                   blank=True, 
                                   default='')
    mobile_no   = models.CharField(max_length=20, 
                                   blank=True, 
                                   default='')

User.is_employee在管理站点上使用list_display问题是该函数User.is_employee仅在该用户有 Employee 时才返回结果。如果没有,那么它会在它第一次遇到调用self.employeeant 的地方停止执行,从而返回 None。这是我在管理员上看到的:最后一个用户最后一个用户的员工状态不是假而是无

对不起,如果问题很混乱。我对 Django 很陌生,这也是我在这个网站上的第一篇文章。先感谢您。

阿拉斯代尔

当没有相关员工时,Doingself.employee会引发ObjectDoesNotExist异常。在您的情况下,异常被捕获并-显示在表中。

您可以使用hasattr来检查用户是否有关联employee而不引发异常。

def is_employee(self):
    return hasattr(self, 'employee')

有关更多信息,请参阅有关一对一关系文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Django 中执行原始 sql 错误:关系不存在

来自分类Dev

Django:关系不存在

来自分类Dev

为什么从 shelljs 执行工作的 shell 脚本会停止执行?

来自分类Dev

如果未执行实际的SQL,为什么SQL Server会抱怨不存在的列?

来自分类Dev

Express.js:错误处理程序执行不会停止。为什么?

来自分类Dev

为什么设置window.location.href不会停止脚本执行

来自分类Dev

Django + posgtres关系不存在错误

来自分类Dev

Django:Postgresql中不存在关系

来自分类Dev

Django:Postgresql中不存在关系

来自分类Dev

Django迁移:关系不存在

来自分类Dev

django-rest-framework多对多关系。如果不存在则创建

来自分类Dev

Django:关系“ django_site”不存在

来自分类Dev

linux cp:如何使它跟随链接,但是如果链接目标不存在,它不会停止

来自分类Dev

如果“中断”我的MediaPlayer为什么会停止工作?

来自分类Dev

为什么TRACE会停止运行?

来自分类Dev

JavaScript:为什么递归不会停止?

来自分类Dev

为什么string命令不会停止?

来自分类Dev

为什么此for循环不会停止

来自分类Dev

为什么会停止记录 PHP 错误?

来自分类Dev

Django错误:关系“ users_user”不存在

来自分类Dev

ProgrammingError:关系“ django_site”不存在

来自分类Dev

django 1.9:ProgrammingError:关系“ users_user”不存在

来自分类Dev

关系“ account_emailaddress”不存在-Django错误

来自分类Dev

Python Django-内部错误ProgrammingError关系不存在

来自分类Dev

django.db.utils.ProgrammingError:关系“ ...”不存在

来自分类Dev

为什么“ on_update”选项在Django Relationship字段中不存在?

来自分类Dev

如果不存在父项,则Django删除子项记录

来自分类Dev

为什么 Apache 在文件 error.log 不存在时停止

来自分类Dev

Django异常不存在

Related 相关文章

  1. 1

    在 Django 中执行原始 sql 错误:关系不存在

  2. 2

    Django:关系不存在

  3. 3

    为什么从 shelljs 执行工作的 shell 脚本会停止执行?

  4. 4

    如果未执行实际的SQL,为什么SQL Server会抱怨不存在的列?

  5. 5

    Express.js:错误处理程序执行不会停止。为什么?

  6. 6

    为什么设置window.location.href不会停止脚本执行

  7. 7

    Django + posgtres关系不存在错误

  8. 8

    Django:Postgresql中不存在关系

  9. 9

    Django:Postgresql中不存在关系

  10. 10

    Django迁移:关系不存在

  11. 11

    django-rest-framework多对多关系。如果不存在则创建

  12. 12

    Django:关系“ django_site”不存在

  13. 13

    linux cp:如何使它跟随链接,但是如果链接目标不存在,它不会停止

  14. 14

    如果“中断”我的MediaPlayer为什么会停止工作?

  15. 15

    为什么TRACE会停止运行?

  16. 16

    JavaScript:为什么递归不会停止?

  17. 17

    为什么string命令不会停止?

  18. 18

    为什么此for循环不会停止

  19. 19

    为什么会停止记录 PHP 错误?

  20. 20

    Django错误:关系“ users_user”不存在

  21. 21

    ProgrammingError:关系“ django_site”不存在

  22. 22

    django 1.9:ProgrammingError:关系“ users_user”不存在

  23. 23

    关系“ account_emailaddress”不存在-Django错误

  24. 24

    Python Django-内部错误ProgrammingError关系不存在

  25. 25

    django.db.utils.ProgrammingError:关系“ ...”不存在

  26. 26

    为什么“ on_update”选项在Django Relationship字段中不存在?

  27. 27

    如果不存在父项,则Django删除子项记录

  28. 28

    为什么 Apache 在文件 error.log 不存在时停止

  29. 29

    Django异常不存在

热门标签

归档