Get_by_natural_key 抛出 AttributeError?

0 投票
1 回答
1011 浏览
提问于 2025-04-18 06:48

我在使用Django的 get_by_natural_key() 方法时遇到了问题。(Django 1.6)

我有一些项目,它们的代码编号是这样的: ABC_1234

管理器和模型:

class ItemManager(models.Manager):
    def get_by_natural_key(self, code_number_):
        return self.get(code_number=code_number_)

class Item(models.Model):
    code_number = models.CharField('Code Number',
        max_length = 10, unique = True)
    def __unicode__(self):
        return self.code_number
    def natural_key(self):
        return (self.code_number,)

在我的测试中,我有这个查询……

Item.objects.get_by_natural_key(code_number)

……这导致了这个错误:

AttributeError: 'Manager' object has no attribute 'get_by_natural_key'

我想把这个 code_number 用作相关模型的自然键,同时也想用它来查询这个模型。

我哪里做错了?有什么建议吗?

1 个回答

1

你还没有把你自定义的管理器和模型关联起来。你需要明确地这样做:

class Item(models.Model):
    ...
    objects = ItemManager()

撰写回答