肥嘟嘟(Fatbobman)的学习笔记Rss Feed

上学的时候懒不愿意做笔记,但确实了解笔记的重要性。现在想做笔记了,但是还是懒,当然对于重要性的认识丝毫没有动摇。

2005/10/28

Django's model 参考(三)

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

0 Comments:

发表评论

<< Home