【发布时间】:2015-05-26 14:49:34
【问题描述】:
我正在尝试在 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 migrate 后,我得到以下信息:
您正在尝试将不可为空的字段“post_id”添加到没有 默认;我们不能那样做(数据库需要方法来填充现有的 行)。 请选择一个修复:
1) 现在提供一次性默认值(将在所有现有行上设置)
2)退出,让我在models.py中添加一个默认值
即使我按 1 并尝试设置一个随机的一次性值,它也会成功迁移,但后来网站崩溃并显示“没有这样的表:blog_posts”。但我认为它应该没有像手动设置默认值这样的变通方法。
我尝试使用帖子和答案的主键。我尝试完全删除它们,以便 django 自动设置它们并尝试将其从 AutoField 更改为 UUIDField ,反之亦然,但它没有帮助。我做错了什么?
【问题讨论】:
-
在那之前你有迁移过吗?您的数据库中有数据吗?
-
是的,我确实进行了一些迁移。虽然数据库中没有数据。删除迁移似乎有所帮助
标签: python django django-migrations