ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-Django迁移

2019-11-20 07:58:29  阅读:201  来源: 互联网

标签:django-migrations python django


我正在尝试在Django上建立博客.我所做的只是创建模型.他们来了:

from django.db import models

import uuid

class Users(models.Model):
    username = models.CharField(max_length = 32, primary_key = True)
    password = models.CharField(max_length = 32)
    email = models.EmailField()
    registration_date = models.DateTimeField(auto_now_add = True)

class Posts(models.Model):
    author = models.ForeignKey("Users")
    header = models.CharField(max_length=100)
    body = models.TextField()
    pub_date = models.DateTimeField(auto_now_add = True)
    mod_date = models.DateTimeField(auto_now = True)
    upvotes = models.PositiveIntegerField()
    views = models.PositiveIntegerField()
    post_id = models.AutoField(primary_key = True)

class Answers(models.Model):
    body = models.TextField()
    author = models.ForeignKey("Users")
    pub_date = models.DateTimeField(auto_now_add = True)
    mod_date = models.DateTimeField(auto_now = True)
    post = models.ForeignKey("Posts")
    answer_id = models.UUIDField(primary_key = True, default=uuid.uuid4)

运行python manage.py migration之后,我得到以下信息:

You are trying to add a non-nullable field ‘post_id’ to posts without
a default; we can’t do that (the database need mething to populate existing
rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py

即使我按1并尝试设置一个随机的一次性值,它也可以成功迁移,但后来在网站上崩溃时显示“无此表:blog_posts”.但是我认为它应该没有手动设置默认值的变通办法.

我尝试使用Posts and Answers的主键.我尝试完全删除它们,以便django自行自动设置它们,并尝试将其从AutoField更改为UUIDField,反之亦然,但这没有帮助.我究竟做错了什么?

解决方法:

您会看到此错误消息,因为django试图建立一致的迁移历史记录,并且它抱怨说,如果有一个数据库保存了您的旧迁移数据,并且您试图添加一个不可为空的字段,不知道该怎么办.

迁移应该放入版本控制中,并在不同的开发/生产环境中使用.如果添加的字段不能为空,则为其他环境的现有数据(例如,生产数据库中保存的模型不具有post_id字段),那么django会警告您,并显示错误消息,并且提供两种解决方案:

>该字段应始终填充默认值(您必须修改models.py)
>这是一次迁移,您需要提供一个一次性的值,例如“ LEGACY”以标记迁移前的数据.

如果您不在生产环境中,并且开发服务器上没有有价值的数据,则修复此错误消息的简单方法就是删除现有的迁移文件,然后运行python manage.py makemigrations&& python manage.py再次迁移.

标签:django-migrations,python,django
来源: https://codeday.me/bug/20191120/2042594.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有