迁移运行良好,但Django不会创建特定表

时间:2019-02-04 08:10:23

标签: django

在对模型进行了一些更改之后,我删除了数据库,并再次开始进行迁移。

python3 manage.py makemigrations    //it creates all the tables
python3 manage.py migrate           //the output is OK

但是,当我尝试查看我的4个表时,发现其中之一丢失了。这是我的models.py文件:

from django.db import models
from datetime import datetime
from django.contrib.auth.models import AbstractUser

class UserTwo(AbstractUser):
    name = models.CharField(max_length=20, unique=True)
    surname = models.CharField(max_length=20, unique=True)
    username = models.CharField(max_length=20, unique=True)
    password = models.CharField(max_length=20, unique=True)
    email = models.EmailField(max_length=20, unique=True)

use_in_migrations = True

class Story(models.Model):
    title = models.CharField(max_length=200)
    story = models.TextField(default="")
    date = models.DateTimeField(default=datetime.now())
    author = models.ForeignKey(UserTwo, on_delete=models.CASCADE)
    likes = models.IntegerField(default=0)
    comments = models.IntegerField(default=0)

    def __str__(self):
        return "%s %s %s " % (self.title, self.story, self.date)


class Comment(models.Model):
    com = models.CharField(max_length=400)
    date = models.DateTimeField(default=datetime.now())
    user = models.ForeignKey(UserTwo, on_delete=models.CASCADE)
    story = models.ForeignKey(Story, on_delete=models.CASCADE)

    def __str__(self):
        return "%s %s" % (self.com, self.date)


class Like(models.Model):
    user = models.ForeignKey(UserTwo, on_delete=models.CASCADE, unique=False)
    story = models.ForeignKey(Story, on_delete=models.CASCADE, unique=False)
    timestamp = models.DateTimeField(default=datetime.now())

    def __str__(self):
        return self.user.username

UserTwo模型是迁移未为其创建表的模型。请注意,这是我在删除数据库之前所做的更改的模型。

这是我的迁移文件:

import datetime
from django.conf import settings
import django.contrib.auth.models
from django.db import migrations, models
import django.utils.timezone    

class Migration(migrations.Migration):

initial = True

dependencies = [
    ('auth', '0009_alter_user_last_name_max_length'),
]

operations = [
    migrations.CreateModel(
        name='UserTwo',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('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')),
            ('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')),
            ('name', models.CharField(max_length=20, unique=True)),
            ('surname', models.CharField(max_length=20, unique=True)),
            ('username', models.CharField(max_length=20, unique=True)),
            ('password', models.CharField(max_length=20, unique=True)),
            ('email', models.EmailField(max_length=20, unique=True)),
            ('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': 'user',
            'verbose_name_plural': 'users',
            'abstract': False,
        },
        managers=[
            ('objects', django.contrib.auth.models.UserManager()),
        ],
    ),
    migrations.CreateModel(
        name='Comment',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('com', models.CharField(max_length=400)),
            ('date', models.DateTimeField(default=datetime.datetime(2019, 2, 4, 9, 57, 42, 656878))),
        ],
    ),
    migrations.CreateModel(
        name='Like',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('timestamp', models.DateTimeField(default=datetime.datetime(2019, 2, 4, 9, 57, 42, 657598))),
        ],
    ),
    migrations.CreateModel(
        name='Story',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('title', models.CharField(max_length=200)),
            ('story', models.TextField(default='')),
            ('date', models.DateTimeField(default=datetime.datetime(2019, 2, 4, 9, 57, 42, 656267))),
            ('likes', models.IntegerField(default=0)),
            ('comments', models.IntegerField(default=0)),
            ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
        ],
    ),
    migrations.AddField(
        model_name='like',
        name='story',
        field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rubies.Story'),
    ),
    migrations.AddField(
        model_name='like',
        name='user',
        field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
    ),
    migrations.AddField(
        model_name='comment',
        name='story',
        field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rubies.Story'),
    ),
    migrations.AddField(
        model_name='comment',
        name='user',
        field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
    ),
]

此外,我的django文件夹中也有其他项目。这可能是为什么它不起作用的原因吗? 有谁知道为什么会这样吗?谢谢! :)

1 个答案:

答案 0 :(得分:0)

从UserTwo中删除use_in_migrations = True,然后重试。