首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django迁徙

Django迁徙
EN

Stack Overflow用户
提问于 2015-05-26 14:49:34
回答 1查看 665关注 0票数 3

我正试图在django上建立一个博客。我一直在创造模型。下面是它们:

代码语言:javascript
复制
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 migrate之后,我得到以下内容:

您正在尝试将非空字段“post_id”添加到没有默认设置的posts中;我们不能这样做(数据库需要mething来填充现有的行)。请选择一个修补程序: 1)立即提供一次性默认设置(将在所有现有行上设置)。 2)退出,让我在models.py中添加一个默认值

即使我按下1并尝试设置一个随机的一次性值,它也会成功地迁移,但是稍后在网站上会崩溃,“没有这样的表: blog_posts”。但是,我认为它应该在不需要手动设置默认值的情况下工作。

我试着用主键弹帖子和答案。我尝试完全删除它们,以便django自动设置它们,并尝试将其从AutoField更改为UUIDField,反之亦然,但没有帮助。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-26 14:51:17

看到这个错误消息是因为django试图构建一个一致的迁移历史,它抱怨说,如果有一个数据库保存了旧迁移的数据,并且尝试添加一个非空字段,它就不知道该做什么了。

迁移应该放在版本控制中,并在不同的开发/生产环境中使用。如果您添加了一个不能为null的字段,则其他环境的现有数据(例如,一个包含没有字段post_id的模型的生产数据库),django将对此发出警告,并提供您得到的错误消息,并提供了两种解决方案:

  1. 此字段应始终使用默认值预置(您必须修改models.py)
  2. 这是一次性迁移,您提供了一个一次性的值,例如标记迁移前数据的“遗留”。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30461940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档