##CRM版本一实现功能
#1、新建一个stark组件
组件就是应用
一个项目可以有多个应用
一个应用可以用在多个项目中
#2、参考admin源码 实现路由分发
#3、数据展示
表头展示
表单展示
#4、自定义数据列
#5、反向解析
#掌握技术点
from app01 import models
models.Book._meta.app_label #获得模型表所在的应用名'app01'
models.Book._meta.model_name #获得模型表对应的字符串名'book'
from app01 import models
models.Book._meta.get_field('title')
# 获取字段对象
models.Book._meta.get_field('title').verbose_name '书名'
models.Book._meta.get_field('price').verbose_name # 获取字段对象verbose_name属性 当你没有指定的时候默认是字段字符串名'price'
##models 模型表结构
from django.db import models
# Create your models here.
class Author(models.Model):
nid = models.AutoField(primary_key=True)
name=models.CharField( max_length=32)
age=models.IntegerField()
# 与AuthorDetail建立一对一的关系
authorDetail=models.OneToOneField(to="AuthorDetail",on_delete=models.CASCADE)
def __str__(self):
return self.name
class AuthorDetail(models.Model):
nid = models.AutoField(primary_key=True)
birthday=models.DateField()
telephone=models.BigIntegerField()
addr=models.CharField( max_length=64)
def __str__(self):
return self.addr
class Publish(models.Model):
nid = models.AutoField(primary_key=True)
name=models.CharField( max_length=32)
city=models.CharField( max_length=32)
email=models.EmailField()
def __str__(self):
return self.name
class Book(models.Model):
nid = models.AutoField(primary_key=True)
title = models.CharField(max_length=32,verbose_name='书名')
publishDate=models.DateField(verbose_name='出版日期')
price=models.DecimalField(max_digits=5,decimal_places=2, verbose_name='价格')
# 与Publish建立一对多的关系,外键字段建立在多的一方
publish=models.ForeignKey(to="Publish",to_field="nid",on_delete=models.CASCADE) # django 2.0版本必须写 1.0默认
# 与Author表建立多对多的关系,ManyToManyField可以建在两个模型中的任意一个,自动创建第三张表
authors=models.ManyToManyField(to='Author',)
def __str__(self):
return self.title
View Code
##修改启动文件 C:\starkpro\stark\apps.py
启动
django一启动就要执行每一个应用下的stark.py(单独新建的一个文件)文件(django默认会启动admin.py文件)
配置文件中注册
INSTALLED_APPS = [
'stark.apps.StarkConfig',
]
在StarkConfig类中 固定写ready方法
from django.apps import AppConfig
from django.utils.module_loading import autodiscover_modules
class StarkConfig(AppConfig):
name = 'stark'
def ready(self):
# 项目启动就会自动查找每一个应用下的stark.py