一、代码
from django.db import models
from django.template.defaultfilters import slugify
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=128, unique=True)
password = models.IntegerField(max_length=20)
email = models.EmailField(null=True, blank=True)
profile = models.ImageField(upload_to='profile_images', null=True, blank=True)
def __str__(self):
return self.username
class Category(models.Model):
course = models.CharField(max_length=128)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.course)
super(Category, self).save(*args, **kwargs)
class Meta:
verbose_name_plural = 'Categories'
def __str__(self):
return self.course
class Page(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length=128)
created_time = models.DateTimeField(auto_now_add=True)
mod_time = models.DateTimeField(auto_now=True)
views = models.IntegerField(default=0)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(Page, self).save(*args, **kwargs)
def __str__(self):
return self.title
二、知识点
1.CharField字段的max_length为必选项
2.null是针对数据库的,表示字段是否可以为空。blank对前端的表单和admin后台显示而言,默认为False(必填),为True时,可以不填写。
3.slug字段用于生成url,具有唯一性,所以设置unique=True。
对象字段为各自的标题,*args表示接受除字典的任意数量参数,**kwargs用来处理字典;
4.定义了一个创建时间,一个修改时间。
auto_now_add:表示创建的时候自动生成,不能修改;
5.能够输入多行文本的TextField.
6.aoto_now:表示修改的当前时间;
7.每个model,都会自带一个自增的id属性,不需要额外设置。显示每篇文章时,可以利用这个id。
这篇文章关于字段及属性很详细:
http://blog.csdn.net/pugongying1988/article/details/72870264
三、同步至数据库
在应用下创建models的数据文件,记录数据的变动
python manage.py makemigrations
将数据同步至数据库,这步会创建表
python manage.py migrate
有时候由于需要,删除掉产生的数据文件(位于应用内),但是执行上述命令新建不了数据文件,现在就需要运行如下命令:
python manage.py makemigrations
也就是指定应用名;
网友评论