为什么我需要在这个类中导入一个类,而不是在文件的顶部?

时间:2014-05-16 17:45:16

标签: python django

所以,昨天我发布了一个我正在使用的类方法的问题(Can an object method return an instance of the object?),答案是"如果你愿意,你可以把它改成一个类方法,但是那里有没有理由你的代码不能按原样运行。"把它改成班级方法是有效的,所以我继续我的生活。现在我遇到了另一个问题,即下面的方法(同一个类)没有用,告诉我'NoneType' object has no attribute 'objects'。我跳进调试器,手动输入完全相同的代码工作正常。我将import User行从文件顶部移动到函数本身,现在它可以正常工作。这是文件中使用User类的唯一位置。人和用户没有与外键关系链接 - 他们只是共享用户名,我们以这种方式进行查找。

我还应该补充一点,这些方法在几天前都运行良好,而且在我们的提交历史中我无法找到它们的任何改动。

Class Person(models.Model):

    def to_user(self):
        '''returns user linked to Person or None(needed for some third
            party packages)'''
        try:
            from django.contrib.auth.models import User
            return User.objects.get(username=str(self.username))
        except ObjectDoesNotExist:
            print("No associated user found using username {0}".format(self.username))
            return None

1 个答案:

答案 0 :(得分:0)

因为我有一个循环导入。