Django属性模型的多种选择

时间:2014-12-13 15:44:53

标签: python django model attributes choice

我有一个模特帖子:

class Post(models.Model):
    # Each post can only have one author.
    author = models.ForeignKey(User, related_name='poster')
    INTRODUCTION = 'I'
    STORIES = 'S'
    CATEGORY_CHOICES = (
        (STORIES, 'Stories'),  # Variable name and display value
        (INTRODUCTION, 'Introduce Yourself'),
    )

    category = models.CharField(max_length=1,
                                choices=CATEGORY_CHOICES,
                                default=INTRODUCTION)

    #Add votes attribute in order to get a total reputation per user based on votes per post.
    votes = models.IntegerField(default=0)


    def __unicode__(self):
        return self.title

我试图创建Post的实例:

post = Post.objects.create(
        author = user,
        category = 'STORIES',
    )

但是当我检查管理页面时,它没有在Stories类别下注册。我错误地分配了这个类别吗?

1 个答案:

答案 0 :(得分:3)

您需要指定S(元组的第一个元素;要在模型中设置的实际值),而不是Stories(元组的第二个元素;人类可读的名称)。

post = Post.objects.create(
    author=user,
    category='S'  # or Post.STORIES
)

请参阅choices - Model field reference - Django documentation