码迷,mamicode.com
首页 > 其他好文 > 详细

django models

时间:2014-12-07 21:33:09      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   使用   sp   for   on   数据   

重温django model

1:many-to-many 的额外属性

一般情况下,many-to-many直接就可以满足我们的要求,考虑这样一种情况:

音乐家和乐团是many-to-many的关系,但是我们还想在他们多对多的关系中添加其他属性,比如,一个音乐家什么时候加入一个乐团,这时候我们可以这样做

通过through参数来作为两个类的媒介

class Person(models.Model):
    name = models.CharField(max_length=128)

    def __unicode__(self):
        return self.name

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through=Membership)

    def __unicode__(self):
        return self.name

class Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)

 2:两个常用的model函数__unicode__()和get_absolute_url()

 

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

    def __unicode__(self):
        return u%s %s % (self.first_name, self.last_name)
    def get_absolute_url(self):
        return "/people/%i/" % self.id

 

 3:代理

有时候你想为一个类添加新的方法或者其他而不想增加额外的数据库空间,那你可以使用代理,

from django.contrib.auth.models import User

class MyUser(User):
    class Meta:
        proxy = True

    def do_something(self):
        ...

 

MyUser是User的代理,MyUser可以访问User的数据库空间,并且可以做一些额外的事情

 

p

django models

标签:style   blog   ar   color   使用   sp   for   on   数据   

原文地址:http://www.cnblogs.com/qwj-sysu/p/4149766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!