【问题标题】:Django Model ChoicesDjango 模型选择
【发布时间】:2012-12-24 21:13:17
【问题描述】:

几个小时以来,我一直对如何在模型中做出选择感到困惑。

到目前为止,我在模型中的已批准字段方面一直存在问题。我想被批准成为 3 个选择中的一个,但我似乎得到的是所有三个选择的元组。在'./manage.py shell'中,我得到

>>> listing.objects.all()[0].approved
((u'1', u'Awaiting'), (u'2', u'No'), (u'3', u'Yes'))

我的模特:

from django.db import models

# Create your models here.
class directory(models.Model):
    name = models.CharField(max_length="50")

class listing(models.Model):
    name = models.CharField(max_length="50")
    directory = models.ForeignKey(directory)
    birthday = models.DateField()
    state = models.CharField(max_length="2") 
    owner = models.CharField(max_length="50")
    approved = (
        (u'1', u'Awaiting'),
        (u'2', u'No'),
        (u'3', u'Yes'),
    )

还有一个问题:但是每当我进行模型更改并尝试使用 South 迁移模式时,我的命令行都会冻结并且永远不会完成迁移模式。关于它为什么冻结的任何可能的建议?它可以检测到更改,但永远不会完成实施它们。因为它永远不会完成,所以当我单击模型进行更改时,我无法再通过管理面板访问我的模型,我永远无法加载页面。

The order in which I run the commands are
    ./manage.py convert_to_south myapp
    ./manage.py schemamigration southtut --auto
    ./manage.py migrate southtut ( never progresses on this command after the first few lines appear)

【问题讨论】:

  • 你应该把第二部分变成它自己的问题,以保持话题,而不是让它成为一个“附带问题”。
  • 我建议您在修复模型后再次尝试南迁移。另外,将上面的“myapp”更改为“southtut”,因为像我这样的其他人会知道这是否是问题的一部分。另外,将类名设为 CapWords。如果您还没有阅读 PEP-8 指南,请阅读 Python 指南:python.org/dev/peps/pep-0008/#class-names

标签: django django-south


【解决方案1】:

approved 正如你所拥有的,它不是一个字段,它只是一个包含三个选项的类属性。选择需要是实际字段的属性:

APPROVAL_CHOICES = (
    (u'1', u'Awaiting'),
    (u'2', u'No'),
    (u'3', u'Yes'),
)
approved = models.CharField(max_length=1, choices=APPROVAL_CHOICES)

【讨论】:

  • 如果我的字段数据类型是整数而不是 CharField,这可能吗?
  • 谢谢丹尼尔,道歉,我对 Django 很陌生。以下代码对我有用,django admin UI 现在向我显示了一个下拉列表。 ACTIVE = 0 INACTIVE = 1 STATUS = ( (ACTIVE, 'active'), (INACTIVE, 'inactive'), ) class TemplateAddon(models.Model): status = models.IntegerField(default=0, choice=STATUS)跨度>
猜你喜欢
  • 2018-09-15
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 2017-04-21
相关资源
最近更新 更多