向模型添加新字段

时间:2018-09-29 12:19:39

标签: python django django-models

我正在尝试将外部关键字添加到模型Article.New列:author。

   title=models.CharField(max_length=30);
    description=models.TextField();
    date=models.DateTimeField(auto_now_add=True);
    author=models.ForeignKey(User,default=None,on_delete=models.PROTECT)

在迁移后,我得到了错误消息:

  在/ articles /的

OperationalError没有这样的列:   article_article.author_id

文章列表:

def article_list(requwest):
    articles=Article.objects.all().order_by('date')
    return render(requwest,"articles/article_list.html",{'articles':articles})

模板:

<div class="articles">
        {% for article in articles %}
            <div class="article">

                <p>{{article.snipped}}</p>
                 <p>{{article.date}} </p>
            </div>
        {% endfor %}
    </div>

我使用本课程:lesson

After update models to:
author = models.ForeignKey(User, blank=True, on_delete=models.PROTECT)
  

django.db.utils.OperationalError:没有这样的列:   article_article.author_id

4 个答案:

答案 0 :(得分:0)

python manage.py makemigrations
python manage.py migrate

答案 1 :(得分:0)

From the doc

  

迁移是Django将您对模型所做的更改(添加字段,删除模型等)传播到数据库模式的一种方法。


出现此错误是因为您尚未迁移具有新更改的数据库(即<div data-hook="review-collapsed" aria-expanded="false" class="a-expander-content a-expander-partial-collapse-content" style="padding-bottom: 19px;">5 th day after...</div>字段)

首先,您必须将 author 添加为模型,

null=True

然后,打开终端并逐个运行命令
1. author=models.ForeignKey(User,default=None,null=True,on_delete=models.PROTECT)
2. python manage.py makemigrations

在这里您可以找到有关Django迁移的不错的文章,Django Migrations: A Primer

答案 2 :(得分:0)

author=models.ForeignKey(User,blank=True,on_delete=models.PROTECT)

然后运行迁移。

答案 3 :(得分:0)

答案:

1)模型:

   author = models.ForeignKey(User, null=True, blank=True, on_delete=models.PROTECT)

2) Dell db.sqlite3
3) python manage.py makemigrations
4) python manage.py migrate