2.django之models

2017-12-04  本文已影响0人  马梦里

一、代码


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
也就是指定应用名;

上一篇 下一篇

猜你喜欢

热点阅读