Model methods __repr__ get_absolute_url 如何表现对象的url def get_absolute_url(self): return "/pizzas/%i/" % self.id _pre_save 内容数据库保存前需要做的事情。比如可以对某些字段进行计算等 _post_save 保存后做的。比如处理其他相关数据表 _pre_delete _post_delete Module-level methods 通过在method名字前面加_module_可以定义module-level的methods class Pizza(meta.Model): def _module_get_pizzas_to_deliver(): return get_list(delivered__exact=False) #__exact 相当于== __ne相当于!= 比较奇怪的用法 >>> from django.models.pizza_hut import pizzas>>> pizzas.get_pizzas_to_deliver()[ ... ] Manipulator methods 通过在method前面加上_manipulator_定义。用来自定义字段检验。使用相应validate事会自动调用 class Pizza(meta.Model): # ... def _manipulator_validate_customer_id(self, field_data, all_data): from django.core import validators from django.conf.settings import BAD_CUSTOMER_IDS if int(field_data) in BAD_CUSTOMER_IDS: raise validators.ValidationError, "We don't deliver to this customer." 使用 models django-admin.py startapp 创建 myapp/ __init__.py # Empty file models/ __init__.py # Contains "__all__ = ['mymodels']" mymodels.py # Contains your models 在setting 中的 INSTALLED_APPS 加上 mymodels |