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

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

2005/10/28

Django's model 参考(二)

关系数据库
    Django可以支持关系数据库中的表结构的多对一、多对多、一对一多种方式。

多对一
    使用ForeignKey

    class City(meta.Model):
        #....
    class Place(meta.Model):
        #....
        city = meta.ForeignKey(City)

    通常情况下,ForeignKey中应该是对应的Model的名字,实际上系统会使用对应Model的_id来维持这个关系。
    使用 meta.ForeignKey("self") 尽兴递归性的多对一

    ForeignKey 参数:
    edit_inline 如果为否,不可在admin模式下编辑。
    limit_choices_to 使用字典来限制admin模式下的选项。
         limit_choice_to={'pub_date__lte' : meta.LazyDate()}

    max_num_in_admin
    min_num_in_admin
    num_extra_on_change
    num_in_admin
    raw_id_admin              都是用于admin模式

    related_name  设置别名
    对于一个对象相对多次关联另一个对象很有用
        meta.ForeignKey( Category, related_name="primary_story")
        meta.ForeignKey(Category, related_name="secondary_story")
       # get_primary_story_list()    get_secondary_story_list()

多对多
    ManyToManyField
    选项:
    related_name 同上
    filter_interface admin模式下使用js而不是select
    limit_choices_to 同上

一对一
      OneToOneField

META 选项  非数据库字段
    class Foo(meta.Model):
        bar = meta.CharField(maxlength=30)
        #....
        class META:
            admin = meta.Admin()
            # ....

    选项:
    admin 一个meta.Admin对象。表示是否在admin模式下可见

    db_table
        db_table="pizza_orders" 否则采用app_lable+'_'+module_name给表命名
    exceptions
        exceptions = ("aaa","bbb")   ?
   
    get_latest_by
        get_lastedt_by = "order_date"对应 一个DateField或者DateTimeField。对象将可通过get_lastest()访问

    module_constants
    一个可用于module_level使用的常量定义字典
         module_constants={'MEAT_TYPE_PEPPERONI':1,'META_TYPE_SAUSAGE':2,}

    module_name
    如果不指定。系统自动使用 小写class名+'s'

    order_with_respect_to
        order_with_respet_to = 'pizza'  根据相关对象排序。如果有关联的话

    ordering
        ordering = ['-order_date'] 真正的排序。get_list -号倒序 ?号乱序

    permissions
    使用二元数组或元组定义admin模式下permissions权限
    ((permission_code, human_readable_permission_name),)

    unique_together
    使用list of lists 定义。用于数据库创建或admin模式
    unique_together = (("driver","restaurant"),)

    verbose_name
    human-readable version
    verbose_name_plural 复数版本

Admin 选项
    date_hierarchy
         date_hierarchy='order_date'  admin通过date过滤对象

    fields
    设置用来显示的字短列表。
    [(name, field_options)] options是一个控制字段的字典。字典键值如下:
    fields 显示那些字段
    classes css设置
 
  fields = (
(None, {
'fields': ('url', 'title', 'content', 'sites')
}),
('Advanced options', {
'classes': 'collapse',
'fields' : ('enable_comments', 'registration_required', 'template_name')
}),
),  
显示效果 
http://media.djangoproject.com/img/doc/flatfiles_admin.png
       
    js
    在admin模式下现实的一个js字符串列表

    list_display
    采用列表显示。
    list_filter 打开过滤器。布朗型或多对一
   
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff'),

list_filter = ('is_staff', 'is_superuser'),

http://media.djangoproject.com/img/doc/users_changelist.png

     ordering 排序
     save_as 另存一个新对象
     save_on_top 上方显示save
     search_fields 上图上面的searech 框

0 Comments:

发表评论

<< Home