8.Django模型类例子

 

 

这里定义4个模型

作者:一个作者有姓名

作者详情:包括性别,email,出生日期,

出版商:名称,地址,城市,省,国家,网站

书籍:名称,日期

 

分析:

作者详情和作者一对一的关系

一本书可以有多个作者,一个作者可以写多本书,作者和书籍多对多关系

一本书只由一个出版商出版,一个出版商可以出版多本书,所以出版商和是一对多

 

步骤:

1.编写models.py文件:

from django.db import models

# Create your models here.
class Publisher(models.Model):
name = models.CharField(max_length=30, verbose_name="名称")
address = models.CharField("地址", max_length=50)
city = models.CharField("城市", max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()

class Meta:
verbose_name = '出版商'
verbose_name_plural = verbose_name

def __str__(self):
return self.name

class Author(models.Model):
name = models.CharField(max_length=30)

class AuthorDetail(models.Model):
sex = models.BooleanField(max_length=1, choices=((0, '男'),(1, '女'),))
email = models.EmailField()
address = models.CharField(max_length=50)
birthday = models.DateField()
author = models.OneToOneField(Author)

class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()

2.生成数据库表  

  manage.py makemigrations  (创建脚本)

  manage.py migrate  (执行脚本)

  

3.在hello_django\hello\admin.py加入管理

from django.contrib import admin
from hello.models import *

# Register your models here.
admin.site.register(Author)
admin.site.register(AuthorDetail)
admin.site.register(Publisher)
admin.site.register(Book)

4.在localhost:8000/admin中查看

这里表明中“出版商”为中文形式,是因为Meta起的作用,点add进去下一个页面

这里的几个中文是因为verbose_name起的作用。如果在上个页面直接点击“出版商”到展示表内容界面

这里能够显示中文是因为__str__()函数的作用

posted @ 2017-03-04 16:47  413Xiaol  阅读(228)  评论(0编辑  收藏  举报