我正在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
它完美无缺!
但是,我似乎有相同的评级代码,并没有显示此框的选项。
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"),)
admin.py中没有任何有趣的内容可以导致此
for m in [TeaType, Brand, Ingredient, Picture, Rating]:
admin.site.register(m)
知道为什么会这样吗?
答案 0 :(得分:2)
在python 3上,zip()返回一个生成器。你的第一个模型正在耗尽那台发电机,第二款车型没有任何选择。在list()调用中包装one_to_five_choices应该可以解决问题。