免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2012 | 回复: 0
打印 上一主题 下一主题

数据模型定义 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-04 11:44 |只看该作者 |倒序浏览

                1.模型的Metadata选项
2.db_table
模型对应的数据库表的名字。
例如,假设你有一个应用程序: books (通过执行 manage.py startapp books 命令创建的),又定义了一个模型: class Book ,那么这个模型对应的默认的数据库表名应该为
books_book 。
(默认是 应用名_类名  为新表的名称 )
通过复写 class Meta 中的 db_table
参数可以改变模型映射的数据库表名:
class Book(models.Model):
    ...
    class Meta:
        db_table = 'things_to_read'
修改其默认表名了!
3.unique_together
组合在一起的一些字段的名字,这些字段的组合值必须是唯一的
class Meta:
        unique_together = [("department", "extension")]
4.为了实现将业务逻辑统一放到一个地方以后编写程序统一将代码放到M层
这是一个很有价值的技术,它有利于你把业务逻辑统一放到一个地方,这个地方就是:model. 例如:model中有一些自定义的方法。
自定义模型的方法出来即可!
某个模型层的业务逻辑封装到相应的方法里面去!
class Person(models.Model):
    first_name = models.CharField(maxlength=50)
    last_name = models.CharField(maxlength=50)
    birth_date = models.DateField()
    address = models.CharField(maxlength=100)
    city = models.CharField(maxlength=50)
    state = models.USStateField() # Yes, this is America-centric...
    def baby_boomer_status(self):
        """Returns the person's baby-boomer status."""
        import datetime
        if datetime.date(1945, 8, 1) 5.__str__
def __str__(self):
        return '%s %s' % (self.first_name, self.last_name)
6.get_absolute_url
可以通过定义 get_absolute_url() 方法来告诉Django怎样得到一个对象的URL.
例如,下面这个例子的写法是很不好:
{{ object.name }}
但这段模板代码就很优雅:
{{ object.name }}
将对象的URL写死掉了。然后我们在模板层中能够调用出来的!
如果发现有些复杂的SQL语句用ORM实现起来比较麻烦的话就可以考虑使用CURSOR方式进行处理了!
执行定制的SQLdef my_custom_sql(self):
    from django.db import connection
    cursor = connection.cursor()
    cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
    row = cursor.fetchone()
    return row
通过使用django.db方式处理的!
覆盖默认的Model方法class Blog(models.Model):
    name = models.CharField(maxlength=100)
    tagline = models.TextField()
    def save(self):
        do_something()
        super(Blog, self).save() # Call the "real" save() method.
        do_something_else()
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/84280/showart_2017269.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP