1、Django Admin学习模型

此专栏应用环境和模型基于此文

开发环境

系统:windows11

开发工具:vscode

开发语言:python 3.8

开发框架:django 3.2

数据库:mysql8.4.1

项目目录

settings

注册两个应用

python 复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Entities',
    'Events',
]

Entities应用

models

python 复制代码
from django.db import models


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, verbose_name='类别')
    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)

admin

python 复制代码
from django.contrib import admin  
from .models import Category, Origin, Hero, Villain  
  
admin.site.register(Category)  
admin.site.register(Origin)  
admin.site.register(Hero)  
admin.site.register(Villain)

Events应用

models

python 复制代码
from django.db import models
from Entities.models import Hero, Villain


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()

admin

python 复制代码
from django.contrib import admin  
from .models import Epic, Event, EventHero, EventVillain  
  
admin.site.register(Epic)  
admin.site.register(Event)  
admin.site.register(EventHero)  
admin.site.register(EventVillain)

呈现:

此之前,需设置settings时区,语言,创建管理员

相关推荐
刘一说40 分钟前
深入理解 Spring Boot 中的数据库迁移:Flyway 与 Liquibase 实战指南
数据库·spring boot·oracle
August_._1 小时前
【MySQL】SQL语法详细总结
java·数据库·后端·sql·mysql·oracle
升鲜宝供应链及收银系统源代码服务2 小时前
升鲜宝生鲜配送供应链管理系统---PMS--商品品牌多语言存储与 Redis 缓存同步实现
java·开发语言·数据库·redis·缓存·开源·供应链系统
苦学编程的谢3 小时前
Redis_8_List
数据库·redis·缓存
曹天骄3 小时前
阿里云 DCDN → CDN 无缝切换教程(以 example.com 为例)
数据库·阿里云·云计算
workflower4 小时前
软件工程-练习
数据库·需求分析·个人开发·极限编程·结对编程
扶尔魔ocy5 小时前
【QT自定义2D控件】QGraphics绘制仪表盘
数据库·qt·microsoft
yookay zhang5 小时前
达梦数据库监听进程
网络·数据库·oracle
Archy_Wang_15 小时前
centos7的mysql做定时任务备份所有数据库
数据库·mysql
Java 码农5 小时前
MySQL基础操作案例设计
数据库·mysql