首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >何时在Django使用makemigrations

何时在Django使用makemigrations
EN

Stack Overflow用户
提问于 2016-03-11 17:19:50
回答 1查看 977关注 0票数 0

我对Django很陌生。我正在学习关于Django 文档的教程。“文件”提到:

通过运行makemigrations,您可以告诉Django您已经对您的模型做了一些更改(在本例中,您已经做了新的修改),并且您希望将这些更改存储为迁移

我不明白这句话。在这里,在教程中,他们只在创建两个makemigrations类()时才运行,即 created &选项 in polls/models.py。但是,当他们在makemigrations子类 However &抉择中修改(或者说我可以说是重新实现) __str__()方法时,并没有运行。此外,他们还添加了一个自定义方法(或操作),即was_published_recently() in 子类

我想他们应该在添加了这些方法之后再做些什么呢?

代码语言:javascript
运行
复制
from __future__ import unicode_literals
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
import datetime

# Create your models here.

@python_2_unicode_compatible   # Only if you need to support Python 2
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('published date')

    def __str__(self):
        return self.question_text

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


@python_2_unicode_compatible   # Only if you need to support Python 2
class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-11 17:31:07

迁移描述了必须对底层数据库中的定义所做的更改,但却不是Django模型中的所有内容都与数据库直接对应。覆盖__str__方法和添加was_published_recently方法不需要任何数据库更改。

添加一个新类并不是唯一需要运行迁移的时候:如果您希望以不同的颜色编写问题,可以将其添加到Question模型中:

代码语言:javascript
运行
复制
color = models.CharField(max_length=6)  # font color hex code

此更改需要对数据库模式进行更改,因此需要进行迁移。

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

https://stackoverflow.com/questions/35946215

复制
相关文章

相似问题

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