首页 > 代码库 > django models
django models
重温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.nameclass Group(models.Model): name = models.CharField(max_length=128) members = models.ManyToManyField(Person, through=‘Membership‘) def __unicode__(self): return self.nameclass 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 Userclass MyUser(User): class Meta: proxy = True def do_something(self): ...
MyUser是User的代理,MyUser可以访问User的数据库空间,并且可以做一些额外的事情
p
django models
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。