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 是否是你期望的