zoukankan      html  css  js  c++  java
  • 1: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.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

  • 相关阅读:
    面向接口程序设计思想实践
    Block Chain Learning Notes
    ECMAScript 6.0
    Etcd Learning Notes
    Travis CI Build Continuous Integration
    Markdown Learning Notes
    SPRING MICROSERVICES IN ACTION
    Java Interview Questions Summary
    Node.js Learning Notes
    Apache Thrift Learning Notes
  • 原文地址:https://www.cnblogs.com/qwj-sysu/p/4149766.html
Copyright © 2011-2022 走看看