class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(db_index=True, max_length=25)), ('slug', models.SlugField(allow_unicode=True, editable=False)), ('position', models.PositiveSmallIntegerField(db_index=True, unique=True)), ('lft', models.PositiveIntegerField(editable=False)), ('rght', models.PositiveIntegerField(editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('parent', mptt.fields.TreeForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='blog.Category')), ], options={ 'verbose_name': 'Category', 'verbose_name_plural': 'Categories', 'ordering': ('name', ), 'unique_together': {('slug', 'parent')}, }, ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200)), ('body', models.TextField()), ('draft', models.BooleanField(default=False)), ('slug', models.SlugField(allow_unicode=True, editable=False, max_length=200, unique=True)), ('publish_date', models.DateTimeField(blank=True, null=True)), ('timestamp', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), ('author', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='authorpost', to=settings.AUTH_USER_MODEL)), ('category', mptt.fields.TreeForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='postcategory', to='blog.Category')), ], options={ 'ordering': ['-publish_date', '-updated', '-timestamp'], 'index_together': {('id', 'slug')}, }, ), migrations.CreateModel( name='Photo', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('file', models.ImageField( blank=True, null=True, unique=True, upload_to=blog.models.images_directory_path)), ('timestamp', models.DateTimeField(auto_now_add=True)), ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='photos', to='blog.Post')), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0009_alter_user_last_name_max_length'), ] operations = [ migrations.CreateModel( name='UserAccount', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='作者昵称、2~30个字符', max_length=30, unique=True, verbose_name='username')), ('email_ac', models.BooleanField(default=False, verbose_name='邮箱状态')), ('mobile', models.CharField(error_messages={'unique': '此手机号已注册'}, help_text='手机号', max_length=11, unique=True, verbose_name='手机号')), ('header', models.URLField(default='', verbose_name='头像')), ('desc', models.TextField(blank=True, help_text='200字描述一下自己', max_length=200, null=True, verbose_name='简介')), ('alipay', models.ImageField(blank=True, null=True, upload_to='dsm/alipay/', verbose_name='支付宝打赏码')), ('wechat', models.ImageField(blank=True, null=True, upload_to='dsm/wechat/', verbose_name='微信打赏码')), ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), ], options={ 'verbose_name': '账户', 'verbose_name_plural': '账户', 'db_table': 'user_account', }, managers=[ ('objects', blog.models.UserManager()), ], ), migrations.CreateModel( name='Advertisement', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('ad_name', models.CharField(max_length=20, verbose_name='广告名')), ('image', models.URLField(blank=True, verbose_name='图片')), ('link', models.URLField(verbose_name='广告链接')), ('adtype', models.PositiveSmallIntegerField(blank=True, choices=[(0, '右侧方形广告'), (1, '左侧长条广告')], null=True, verbose_name='广告类型')), ('remark', models.TextField(blank=True, max_length=64, null=True, verbose_name='备注')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='添加时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='最近修改')), ('end', models.DateTimeField(null=True, verbose_name='结束时间')), ], options={ 'verbose_name': '广告', 'verbose_name_plural': '广告', 'db_table': 'advertisement', }, ), migrations.CreateModel( name='Blog', fields=[ ('id', models.CharField(default=shortuuid.main.ShortUUID.random, max_length=12, primary_key=True, serialize=False)), ('title', models.CharField(help_text='1~32个字', max_length=32, verbose_name='标题')), ('cover', models.URLField(blank=True, default='', verbose_name='封面')), ('content', models.TextField(blank=True, null=True, verbose_name='内容')), ('source', models.URLField(blank=True, help_text='如果转载, 则提供原文链接', null=True, verbose_name='原文链接')), ('is_fine', models.BooleanField(default=False, verbose_name='站长推荐')), ('is_top', models.BooleanField(default=False, verbose_name='是否置顶')), ('read', models.PositiveIntegerField(default=0, verbose_name='阅读数')), ('like', models.PositiveIntegerField(default=0, verbose_name='点赞数')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='发表时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='最后修改')), ('is_active', models.BooleanField(default=False, verbose_name='是否可用')), ('author', models.ForeignKey(limit_choices_to={'is_active': True, 'is_staff': True}, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), ], options={ 'verbose_name': '文章', 'verbose_name_plural': '文章', 'db_table': 'blog', }, ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='更新修改')), ('is_active', models.BooleanField(default=True, verbose_name='逻辑删除')), ('pre_cat', models.CharField(choices=[('A', '文学类'), ('B', '技术类')], max_length=1, verbose_name='前置分类')), ('cat', models.CharField(help_text='1~12个字', max_length=12, verbose_name='类别')), ], options={ 'verbose_name': '类别', 'verbose_name_plural': '类别', 'db_table': 'category', }, ), migrations.CreateModel( name='Expand', fields=[ ('key', models.CharField(help_text='1~16字符', max_length=16, primary_key=True, serialize=False, verbose_name='键')), ('value', models.CharField(help_text='1~32字符', max_length=32, verbose_name='值')), ('remark', models.TextField(max_length=100, null=True, verbose_name='备注')), ('mod', models.DateTimeField(auto_now=True, verbose_name='上次变更')), ], options={ 'verbose_name': '拓展数据', 'verbose_name_plural': '拓展数据', 'db_table': 'expand', }, ), migrations.CreateModel( name='Link', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='更新修改')), ('is_active', models.BooleanField(default=True, verbose_name='逻辑删除')), ('link', models.URLField(help_text='完整的网站首页地址', max_length=64, unique=True, verbose_name='链接')), ('link_name', models.CharField(help_text='网站的名字', max_length=32, verbose_name='链接名称')), ('cat', models.PositiveSmallIntegerField(choices=[(0, '公益链接'), (1, '个人主页'), (2, '商业广告')], default=1, help_text='网站类型', verbose_name='链接类型')), ('email', models.EmailField(help_text='有特殊情况方便联系', max_length=32, verbose_name='邮箱')), ], options={ 'verbose_name': '友链', 'verbose_name_plural': '友链', 'db_table': 'link', }, ), migrations.CreateModel( name='Music', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=64, verbose_name='音乐名')), ('author', models.CharField(max_length=20, verbose_name='歌手')), ('code', models.TextField(max_length=300, verbose_name='外链代码')), ('mod', models.DateTimeField(auto_now=True, verbose_name='最后变更')), ('is_active', models.BooleanField(default=True, verbose_name='是否可用')), ], options={ 'verbose_name': '外链音乐', 'verbose_name_plural': '外链音乐', 'db_table': 'music', }, ), migrations.CreateModel( name='Notice', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='更新修改')), ('is_active', models.BooleanField(default=True, verbose_name='逻辑删除')), ('title', models.CharField(help_text='1~20个字', max_length=20, verbose_name='标题')), ('content', models.TextField(verbose_name='内容')), ], options={ 'verbose_name': '公告', 'verbose_name_plural': '公告', 'db_table': 'notice', }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='更新修改')), ('is_active', models.BooleanField(default=True, verbose_name='逻辑删除')), ('tag', models.CharField(help_text='1~12个字', max_length=12, unique=True, verbose_name='标签')), ], options={ 'verbose_name': '标签', 'verbose_name_plural': '标签', 'db_table': 'tag', }, ), migrations.AlterUniqueTogether( name='music', unique_together={('name', 'author')}, ), migrations.AddField( model_name='blog', name='cat', field=models.ForeignKey(limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='cblogs', to='blog.Category', verbose_name='分类'), ), migrations.AddField( model_name='blog', name='music', field=models.ForeignKey(blank=True, limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mblogs', to='blog.Music', verbose_name='背景音乐'), ), migrations.AddField( model_name='blog', name='tags', field=models.ManyToManyField(blank=True, limit_choices_to={'is_active': True}, related_name='tblogs', to='blog.Tag', verbose_name='标签'), ), migrations.CreateModel( name='Author', fields=[ ], options={ 'verbose_name': '账户中心', 'verbose_name_plural': '账户中心', 'proxy': True, 'indexes': [], }, bases=('blog.useraccount',), managers=[ ('objects', blog.models.UserManager()), ], ), migrations.CreateModel( name='AuthorBlog', fields=[ ], options={ 'verbose_name': '我的文章', 'verbose_name_plural': '我的文章', 'proxy': True, 'indexes': [], }, bases=('blog.blog',), ), ]
class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name='Categoria', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('nome', models.CharField(max_length=100, verbose_name='Nome da categoria')), ('slug', models.SlugField(verbose_name='Atalho')), ], ), migrations.CreateModel( name='Editor', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('nome', models.CharField(max_length=100, verbose_name='Nome e Sobrenome do Editor')), ('facebooklink', models.CharField(blank=True, max_length=200, null=True, verbose_name='Link do Facebook pessoal')), ], ), migrations.CreateModel( name='Email', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('nome', models.CharField(max_length=100)), ('email', models.EmailField(max_length=254)), ], ), migrations.CreateModel( name='EnviarEmail', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('assunto', models.CharField(max_length=200)), ('texto', ckeditor.fields.RichTextField()), ], ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=100)), ('slug', models.SlugField(verbose_name='Atalho')), ('subtitle', models.CharField(blank=True, max_length=100, null=True)), ('keywords', models.CharField( blank=True, help_text='Palavras chaves separadas por vírgula', max_length=150, null=True, verbose_name='Keywords')), ('capa', models.ImageField( default='blog/img/logo.svg', help_text='Resolução recomendada: 800x600 horizontal', upload_to=blog.models.path_and_rename, verbose_name='Foto da capa')), ('nivel', models.PositiveSmallIntegerField(default=1, null=True)), ('content', ckeditor.fields.RichTextField()), ('created_date', models.DateTimeField(default=django.utils.timezone.now)), ('published_date', models.DateTimeField(blank=True, null=True)), ('categoria', models.ManyToManyField(to='blog.Categoria')), ('editor', models.ManyToManyField(to='blog.Editor')), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Article', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('title', models.CharField(max_length=100, unique=True, verbose_name='文章标题')), ('content', mdeditor.fields.MDTextField(verbose_name='文章内容')), ('type', models.CharField(choices=[('a', '文章'), ('p', '页面')], default='a', max_length=1, verbose_name='文章类型')), ('order', models.PositiveSmallIntegerField(default=0, help_text='越大越前', verbose_name='排序')), ('views', models.PositiveIntegerField(default=0, verbose_name='浏览量')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), ], options={ 'verbose_name': '2-文章', 'verbose_name_plural': '2-文章', 'ordering': ['-order', '-add_time'], }, ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('name', models.CharField(max_length=30, unique=True, verbose_name='分类')), ('order', models.PositiveSmallIntegerField(default=0, help_text='越大越前', verbose_name='排序')), ('slug', models.SlugField(default='')), ('parent_category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='父级分类')), ], options={ 'verbose_name': '1-文章分类', 'verbose_name_plural': '1-文章分类', 'ordering': ['-order', 'add_time'], }, ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('content', models.TextField(max_length=250, verbose_name='评论内容')), ('is_enable', models.BooleanField(default=True, verbose_name='是否显示')), ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Article', verbose_name='评论文章')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='评论者')), ('parent_comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Comment', verbose_name='父评论')), ], options={ 'verbose_name': '3-文章评论', 'verbose_name_plural': '3-文章评论', }, ), migrations.CreateModel( name='GuestBook', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('content', models.TextField(max_length=250, verbose_name='留言内容')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='留言者')), ], options={ 'verbose_name': '7-留言板', 'verbose_name_plural': '7-留言板', 'ordering': ['author', '-id'], }, ), migrations.CreateModel( name='Link', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('name', models.CharField(max_length=30, unique=True, verbose_name='链接名称')), ('order', models.PositiveSmallIntegerField(default=0, help_text='越大越前', verbose_name='排序')), ('url', models.URLField(verbose_name='链接地址')), ('is_enable', models.BooleanField(default=True, verbose_name='是否启用')), ], options={ 'verbose_name': '8-友情链接', 'verbose_name_plural': '8-友情链接', 'ordering': ['order'], }, ), migrations.CreateModel( name='Photo', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('title', models.CharField(help_text='用于当作照片名称', max_length=50, verbose_name='图片标题')), ('desc', models.TextField(blank=True, help_text='用于图片标签的title属性', max_length=200, null=True, verbose_name='图片描述')), ('image', models.ImageField(help_text='默认保存在/media/photo/', upload_to=blog.models.photo_path, verbose_name='图片')), ], options={ 'verbose_name': '6-相册图片', 'verbose_name_plural': '6-相册图片', }, ), migrations.CreateModel( name='Setting', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='站点名称')), ('desc', models.TextField(blank=True, default='', verbose_name='站点描述')), ('keyword', models.TextField(blank=True, default='', verbose_name='站点关键字')), ('article_desc_len', models.IntegerField(default=250, verbose_name='文章摘要长度')), ('sidebar_article_count', models.IntegerField(default=10, verbose_name='侧边栏文章条数')), ('enable_photo', models.BooleanField(default=True, verbose_name='是否启用相册')), ('user_verify_email', models.BooleanField(default=False, verbose_name='用户注册是否验证邮箱')), ('enable_multi_user', models.BooleanField( default=False, help_text='是否启用多用户博客系统, 注册用户只具有对自己文章的增删改查权限', verbose_name='是否启用多用户博客系统')), ('github_user', models.CharField(default='enjoy-binbin', help_text='https://github.com/enjoy-binbin', max_length=50, verbose_name='github账号')), ('github_repository', models.CharField( default='Django-blog', help_text='https://github.com/enjoy-binbin/Django-blog', max_length=50, verbose_name='github仓库')), ], options={ 'verbose_name': '0-站点配置', 'verbose_name_plural': '0-站点配置', }, ), migrations.CreateModel( name='SideBar', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('title', models.CharField(max_length=30, verbose_name='标题')), ('content', models.TextField(verbose_name='内容')), ('order', models.PositiveSmallIntegerField(default=1, help_text='越大越前', verbose_name='排序')), ('is_enable', models.BooleanField(default=True, verbose_name='是否启用')), ], options={ 'verbose_name': '5-侧边栏', 'verbose_name_plural': '5-侧边栏', 'ordering': ['-order'], }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('name', models.CharField(max_length=25, unique=True, verbose_name='标签名')), ], options={ 'verbose_name': '4-文章标签', 'verbose_name_plural': '4-文章标签', 'ordering': ['name'], }, ), migrations.AddField( model_name='article', name='category', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='文章分类'), ), migrations.AddField( model_name='article', name='tags', field=models.ManyToManyField(blank=True, to='blog.Tag', verbose_name='标签'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='name')), ('title', models.CharField(blank=True, max_length=255, verbose_name='title')), ('slug', models.SlugField(unique=True, verbose_name='slug')), ('description', models.TextField(blank=True, verbose_name='description')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='creation time')), ('genre', models.PositiveSmallIntegerField(choices=[(1, 'collection'), (2, 'tutorial')], default=1, verbose_name='genre')), ('status', models.PositiveSmallIntegerField(blank=True, choices=[(1, 'ongoing'), (2, 'finished')], null=True, verbose_name='status')), ('cover', models.ImageField( blank=True, upload_to='/static/covers/categories/%Y/%m/%d/', verbose_name='cover')), ('cover_caption', models.CharField(blank=True, max_length=255, verbose_name='cover caption')), ('resource', models.URLField(blank=True, verbose_name='resource')), ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='creator')), ], ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.PositiveSmallIntegerField(choices=[(1, 'published'), (2, 'draft'), (3, 'hidden')], default=2, verbose_name='status')), ('title', models.CharField(max_length=255, verbose_name='title')), ('body', models.TextField(verbose_name='body')), ('excerpt', models.CharField(blank=True, max_length=255, verbose_name='excerpt')), ('views', models.PositiveIntegerField(default=0, editable=False, verbose_name='views')), ('pub_date', models.DateTimeField(blank=True, null=True, verbose_name='publication time')), ('created_time', model_utils.fields.AutoCreatedField( default=django.utils.timezone.now, editable=False, verbose_name='creation time')), ('modified_time', model_utils.fields.AutoLastModifiedField( default=django.utils.timezone.now, editable=False, verbose_name='modification time')), ('cover', models.ImageField(blank=True, upload_to=blog.models.post_cover_path, verbose_name='cover')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='category')), ], options={ 'ordering': ['-created_time'], }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='name')), ], ), migrations.AddField( model_name='post', name='tags', field=models.ManyToManyField(blank=True, to='blog.Tag', verbose_name='tags'), ), ]
class Migration(migrations.Migration): dependencies = [ ('blog', '0003_auto_20180131_2021'), ] operations = [ migrations.CreateModel( name='Img', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='图片名(描述)')), ('head_pic', models.ImageField(upload_to='blog/', verbose_name='图片')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='creation time')), ], options={ 'verbose_name_plural': '图片', 'ordering': ['-created'], 'verbose_name': '图片', }, ), migrations.AlterModelOptions( name='category', options={ 'verbose_name': '类别', 'verbose_name_plural': '类别' }, ), migrations.AlterModelOptions( name='post', options={ 'ordering': ['-created_time'], 'verbose_name': '文章', 'verbose_name_plural': '文章' }, ), migrations.AlterModelOptions( name='tag', options={ 'verbose_name': '标签', 'verbose_name_plural': '标签' }, ), migrations.AlterField( model_name='category', name='cover', field=models.ImageField( blank=True, upload_to='media/covers/categories/%Y/%m/%d/', verbose_name='封面(教程使用)'), ), migrations.AlterField( model_name='category', name='cover_caption', field=models.CharField(blank=True, max_length=255, verbose_name='封面标题(教程使用)'), ), migrations.AlterField( model_name='category', name='creator', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者'), ), migrations.AlterField( model_name='category', name='description', field=models.TextField(blank=True, verbose_name='描述'), ), migrations.AlterField( model_name='category', name='genre', field=models.PositiveSmallIntegerField(choices=[(1, '普通'), (2, '教程')], default=1, verbose_name='类型'), ), migrations.AlterField( model_name='category', name='name', field=models.CharField(max_length=100, verbose_name='名字'), ), migrations.AlterField( model_name='category', name='resource', field=models.URLField(blank=True, verbose_name='资源(废弃)'), ), migrations.AlterField( model_name='category', name='slug', field=models.SlugField(unique=True, verbose_name='英文名'), ), migrations.AlterField( model_name='category', name='status', field=models.PositiveSmallIntegerField(blank=True, choices=[(1, '进行中'), (2, '已完成')], null=True, verbose_name='状态(教程使用)'), ), migrations.AlterField( model_name='category', name='title', field=models.CharField(blank=True, max_length=255, verbose_name='标题'), ), migrations.AlterField( model_name='post', name='author', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者'), ), migrations.AlterField( model_name='post', name='body', field=models.TextField(verbose_name='内容'), ), migrations.AlterField( model_name='post', name='category', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='类别'), ), migrations.AlterField( model_name='post', name='cover', field=models.ImageField(blank=True, upload_to=blog.models.post_cover_path, verbose_name='封面'), ), migrations.AlterField( model_name='post', name='created_time', field=model_utils.fields.AutoCreatedField( default=django.utils.timezone.now, editable=False, verbose_name='创建时间'), ), migrations.AlterField( model_name='post', name='excerpt', field=models.CharField(blank=True, max_length=255, verbose_name='摘要'), ), migrations.AlterField( model_name='post', name='modified_time', field=model_utils.fields.AutoLastModifiedField( default=django.utils.timezone.now, editable=False, verbose_name='修改时间'), ), migrations.AlterField( model_name='post', name='pub_date', field=models.DateTimeField(blank=True, null=True, verbose_name='发布时间'), ), migrations.AlterField( model_name='post', name='status', field=models.PositiveSmallIntegerField(choices=[ (1, '发布'), (2, '草稿'), (3, '隐藏'), (4, '秘密') ], default=2, verbose_name='状态'), ), migrations.AlterField( model_name='post', name='tags', field=models.ManyToManyField(blank=True, to='blog.Tag', verbose_name='标签'), ), migrations.AlterField( model_name='post', name='title', field=models.CharField(max_length=255, verbose_name='标题'), ), migrations.AlterField( model_name='post', name='views', field=models.PositiveIntegerField(default=0, editable=False, verbose_name='查看次数'), ), migrations.AlterField( model_name='tag', name='name', field=models.CharField(max_length=100, verbose_name='名字'), ), ]