Class 函数未找到
Class function is not found
我在从 pinax-referrals 包创建推荐时遇到问题。推荐人 class 有 class 函数 create(...) 当我试图在视图内部创建推荐人时,例如:
from pinax.referrals.models import Referral
def createReferral(user):
referral = Referral.create(
user = user,
redirect_to = "/"
)
它抛出以下错误:
type object 'Referral' has no attribute 'create'
Pinax 模型中的代码看起来没问题:
@classmethod
def create(cls, redirect_to, user=None, label="", target=None):
if target:
obj, _ = cls.objects.get_or_create(
user=user,
redirect_to=redirect_to,
label=label,
target_content_type=ContentType.objects.get_for_model(target),
target_object_id=target.pk
)
else:
obj, _ = cls.objects.get_or_create(
user=user,
label=label,
redirect_to=redirect_to,
)
return obj
据我了解,问题与 Pinax 包本身无关,看起来很奇怪。有人有什么想法吗?
听起来您在同一个模块中定义了另一个 class Referral
,它取代了 Pinax 的 Referral
模型。
这可能是因为您定义了 class,
class Referral(View):
...
或者您可能导入了另一个 class Referral
。如果您执行 *
导入,这可能并不明显。
from mymodule import *
一个有用的调试工具是将 print(Referral)
添加到您的视图中。然后你会看到 Referral
class 是否是你期望的
我在从 pinax-referrals 包创建推荐时遇到问题。推荐人 class 有 class 函数 create(...) 当我试图在视图内部创建推荐人时,例如:
from pinax.referrals.models import Referral
def createReferral(user):
referral = Referral.create(
user = user,
redirect_to = "/"
)
它抛出以下错误:
type object 'Referral' has no attribute 'create'
Pinax 模型中的代码看起来没问题:
@classmethod
def create(cls, redirect_to, user=None, label="", target=None):
if target:
obj, _ = cls.objects.get_or_create(
user=user,
redirect_to=redirect_to,
label=label,
target_content_type=ContentType.objects.get_for_model(target),
target_object_id=target.pk
)
else:
obj, _ = cls.objects.get_or_create(
user=user,
label=label,
redirect_to=redirect_to,
)
return obj
据我了解,问题与 Pinax 包本身无关,看起来很奇怪。有人有什么想法吗?
听起来您在同一个模块中定义了另一个 class Referral
,它取代了 Pinax 的 Referral
模型。
这可能是因为您定义了 class,
class Referral(View):
...
或者您可能导入了另一个 class Referral
。如果您执行 *
导入,这可能并不明显。
from mymodule import *
一个有用的调试工具是将 print(Referral)
添加到您的视图中。然后你会看到 Referral
class 是否是你期望的