您的位置:首页 > 数据库 > SQL

3、Django、MySQL第一个模型

2015-06-09 23:25 651 查看
1、创建目录

在mysite目录下,执行

python manage.py startapp books




2、定义数据模型

打开 models.py 并输入下面的内容:

# -*- coding:utf-8 -*-
from django.db import models
from django.contrib import admin

class Publisher(models.Model):
name = models.CharField(max_length=30,blank=True)
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()
def __unicode__(self):
return self.name
#Ĭ����������
#class Meta:
#    ordering = ["name"]

#Admin ������־�˸�����һ���������'''
class Admin:
pass

class Author(models.Model):
salutation=models.CharField(max_length=10)
first_name=models.CharField(max_length=30)
last_name=models.CharField(max_length=40)
email=models.EmailField(max_length=30)
#headshot = models.ImageField(upload_to='/tmp')
def __unicode__(self):
return '%s %s' % (self.first_name, self.last_name)
#Admin ������־�˸�����һ���������'''
class Admin:
pass

class Book(models.Model):
title=models.CharField(max_length=100)
authors=models.ManyToManyField(Author)
publisher=models.ForeignKey(Publisher)
publication_date=models.DateField()
num_page =models.IntegerField(blank=True,null=True)

def __unicode__(self):
return 'Book name :%s' % self.title


3、模型安装

编辑 settings.py 文件

MIDDLEWARE_CLASSES = (
#    'django.middleware.common.CommonMiddleware',
#    'django.contrib.sessions.middleware.SessionMiddleware',
#    'django.contrib.auth.middleware.AuthenticationMiddleware',
#    'django.middleware.doc.XViewMiddleware',
)

TEMPLATE_CONTEXT_PROCESSORS = ()
#...

INSTALLED_APPS = (
#'django.contrib.auth',
#'django.contrib.contenttypes',
#'django.contrib.sessions',
#'django.contrib.sites',
'mysite.books',
)


校验模型有效性:

python manage.py validate
但是这一步一直出问题,原因在于我的book目录是在项目文件夹根目录下的,项目文件夹的mysite和mysite.books并不完全等同。我将books移动到项目文件夹目录下的mysite目录下(好拗口,有空再问问学长),就是这样子:



生成SQL语句:

python manage.py sqlall books


结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: