6

私は何時間も私のモデル内で選択をする方法に困惑してきました。

これまでのところ、モデルの承認済みフィールドで問題が発生しています。3つの選択肢のうちの1つとして承認されたいのですが、私が得ているように見えるのは、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)
4

1 に答える 1

19

approvedフィールドではないので、3つの選択肢を含む単なるクラス属性です。選択肢は、実際のフィールドの属性である必要があります。

APPROVAL_CHOICES = (
    (u'1', u'Awaiting'),
    (u'2', u'No'),
    (u'3', u'Yes'),
)
approved = models.CharField(max_length=1, choices=APPROVAL_CHOICES)
于 2012-12-24T21:15:56.800 に答える