Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django迁移错误:错误:';选择';必须是iterable(例如,列表或元组)_Python_Django_Django Models_Django Admin_Django Migrations - Fatal编程技术网

Python Django迁移错误:错误:';选择';必须是iterable(例如,列表或元组)

Python Django迁移错误:错误:';选择';必须是iterable(例如,列表或元组),python,django,django-models,django-admin,django-migrations,Python,Django,Django Models,Django Admin,Django Migrations,我已经为博客应用程序创建了模型。这是my models.py: from django.db import models from django.utils import timezone from django.contrib.auth.models import User # Create your models here. class post(models.Model): STATUS_CHOICE=( ('draft','DRAFT'), ('p

我已经为博客应用程序创建了模型。这是my models.py:

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.
class post(models.Model):
    STATUS_CHOICE=(
        ('draft','DRAFT'),
        ('published','Published'),
    )

    title=models.CharField(max_length=250)
    slug=models.SlugField(max_length = 250,unique_for_date='publish')
    author=models.ForeignKey(User,related_name='blog_posts')
    body=models.TextField()
    publish=models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated=models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10,
                                choices = 'STATUS_CHOICES',
                                    default='draft')
    class Meta:
        ordering = ('-publish',)
    def __str__(self):
        return self.title
当我尝试迁移模型时,出现了以下错误:

ERRORS:
myblog.post.status: (fields.E004) 'choices' must be an iterable (e.g., a list or tuple).
这是我的admin.py文件:

from django.contrib import admin
from .models import post

# Register your models here.
admin.site.register(post)

有人能帮我解决这个问题吗?

选项
需要参考您在上面声明的列表,而不是字符串:

status = models.CharField(max_length=10,
                            choices = STATUS_CHOICE,
                                default='draft')

请从中的状态选项中删除引号

status = models.CharField(max_length=10,
                        choices = 'STATUS_CHOICES',
                            default='draft')
致:


微妙的错误:
STATUS\u CHOICES
在OPs代码中不仅作为字符串错误,而且还声明为
STATUS\u CHOICE
,但现在我在使用命令python manage时出错,py makemigrations错误:您试图在没有默认设置的情况下将不可为空的字段“author”添加到post中;我们不能这样做(数据库需要一些东西来填充现有的行)。请选择一个修复程序:1)立即提供一个一次性默认值(将在此列的所有现有行上设置一个空值)2)退出,让我在models.py中添加一个默认值选择一个选项非错误。。。仔细读吧。这是将要对您的DB表执行的操作。。。要么为该字段指定默认值,要么继续。。。
status = models.CharField(max_length=10,
                        choices = STATUS_CHOICE,
                            default='draft')