自定义models方法

1.在Meta里定义 _Manager
2.在_Manager里定义需要自定义的方法

class Product(models.Model):
    name = models.CharField(max_length=255, unique=True)
    description = models.CharField(max_length=255)

    def natural_key(self):
        return self.name,

    class Meta:
        db_table = 'products'

        class _Manager(models.Manager):
            def get_by_natural_key(self, name):
                return self.get(name=name)

    objects = Meta._Manager()

命令行使用

(InteractiveConsole)
>>> from books.models import Product
>>> p = Product.objects.get_by_natural_key('python')
>>> p

>>> p.name
u'python'
>>> 

你可能感兴趣的:(自定义models方法)