zoukankan      html  css  js  c++  java
  • Django Admin Cookbook-本书中使用的模型

    在这本书中使用的模型

    entities应用

    models.py代码:

    class Category(models.Model):
        name = models.CharField(max_length=100)
        class Meta:
            verbose_name_plural = "Categories"
        def __str__(self):
            return self.name
    
    class Origin(models.Model):
        name = models.CharField(max_length=100)
        def __str__(self):
            return self.name
    
    class Entity(models.Model):
        GENDER_MALE = "Male"
        GENDER_FEMALE = "Female"
        GENDER_OTHERS = "Others/Unknown"
        name = models.CharField(max_length=100)
        alternative_name = models.CharField(
            max_length=100, null=True, blank=True
        )
        category = models.ForeignKey(Category, on_delete=models.CASCADE)
        origin = models.ForeignKey(Origin, on_delete=models.CASCADE)
        gender = models.CharField(
            max_length=100,
            choices=(
                (GENDER_MALE, GENDER_MALE),
                (GENDER_FEMALE, GENDER_FEMALE),
                (GENDER_OTHERS, GENDER_OTHERS),
            )
        )
        description = models.TextField()
        def __str__(self):
            return self.name
        class Meta:
            abstract = True
    
    class Hero(Entity):
        class Meta:
            verbose_name_plural = "Heroes"
        is_immortal = models.BooleanField(default=True)
        benevolence_factor = models.PositiveSmallIntegerField(
            help_text="How benevolent this hero is?"
        )
        arbitrariness_factor = models.PositiveSmallIntegerField(
            help_text="How arbitrary this hero is?"
        )
        # relationships
        father = models.ForeignKey(
            "self", related_name="+", null=True, blank=True, on_delete=models.SET_NULL
        )
        mother = models.ForeignKey(
            "self", related_name="+", null=True, blank=True, on_delete=models.SET_NULL
        )
        spouse = models.ForeignKey(
            "self", related_name="+", null=True, blank=True, on_delete=models.SET_NULL
        )
    
    class Villain(Entity):
        is_immortal = models.BooleanField(default=False)
        malevolence_factor = models.PositiveSmallIntegerField(
            help_text="How malevolent this villain is?"
        )
        power_factor = models.PositiveSmallIntegerField(
            help_text="How powerful this villain is?"
        )
        is_unique = models.BooleanField(default=True)
        count = models.PositiveSmallIntegerField(default=1)
    

    events应用

    models.py代码:

    class Epic(models.Model):
        name = models.CharField(max_length=255)
        participating_heroes = models.ManyToManyField(Hero)
        participating_villains = models.ManyToManyField(Villain)
    
    class Event(models.Model):
        epic = models.ForeignKey(Epic, on_delete=models.CASCADE)
        details = models.TextField()
        years_ago = models.PositiveIntegerField()
    
    class EventHero(models.Model):
        event = models.ForeignKey(Event, on_delete=models.CASCADE)
        hero = models.ForeignKey(Hero, on_delete=models.CASCADE)
        is_primary = models.BooleanField()
    
    class EventVillain(models.Model):
        event = models.ForeignKey(Event, on_delete=models.CASCADE)
        hero = models.ForeignKey(Villain, on_delete=models.CASCADE)
        is_primary = models.BooleanField()
    

    返回目录

  • 相关阅读:
    supervisord + docker run = web页面管理运行的docker
    docker之Dockerfile实践用dockerfile构建nginx环境
    Dockerfile文件详解
    【docker】CMD ENTRYPOINT 区别 终极解读!
    golang html/template
    网络连接带宽的理论最大值
    Queue length 和 Queue depth 的区别
    .tar.gz 文件和 .tar.xz 文件的区别
    如何同时在Isilon的所有网卡上抓取网络包?
    Reimage Isilon cluster,结果忘记了修改管理口的netmask,怎么办?
  • 原文地址:https://www.cnblogs.com/superhin/p/12159737.html
Copyright © 2011-2022 走看看