Django Admin - 为一个Integer模型工作的选择,而不是另一个

时间:2017-06-18 21:36:48

标签: python django django-admin

我正在Django制作茶叶目录,我对这些模型有一些问题。对于某些评级,我希望数据库中的某些内容可以选择1-5。例如,对于茶类型,我想要1-5的caffine水平。我使用以下代码执行此操作:

one_to_five_choices = zip(range(1,5+1), range(1,5+1))
...

class TeaType(models.Model):
    name = models.CharField(max_length=20, primary_key=True)
    steeping_temperature = models.PositiveSmallIntegerField()
    steeping_time_minutes = models.PositiveSmallIntegerField()
    caffeine_level = models.PositiveSmallIntegerField(choices=one_to_five_choices)
    directions = models.TextField()

    def __str__(self):
        return self.name

它完美无缺!

enter image description here

但是,我似乎有相同的评级代码,并没有显示此框的选项。

class Rating(models.Model):
    rating = models.PositiveSmallIntegerField(choices=one_to_five_choices)
    tea = models.ForeignKey(Tea)
    user = models.ForeignKey(User)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return "{} star rating for {} by {}".format(self.rating, self.tea, self.user.get_username())

    class Meta:
        unique_together = (("user", "tea"),)

以下是图片:enter image description here

admin.py中没有任何有趣的内容可以导致此

for m in [TeaType, Brand, Ingredient, Picture, Rating]:
    admin.site.register(m)

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

在python 3上,zip()返回一个生成器。你的第一个模型正在耗尽那台发电机,第二款车型没有任何选择。在list()调用中包装one_to_five_choices应该可以解决问题。