我在模型中有一个字段,我想成为一个选择或空白。可能会有尽可能多的空白项目,但需要对所有其他项目都是唯一的,即同一天可能没有两个特价。
这是我的views.py
class Item(models.Model):
CATEGORY_CHOICES = (('Sandwich', 'Sandwich'), ('Salad', 'Salad'), ('Slider', 'Slider'), ('Side', 'Side'), ('Drink', 'Drink'))
DAYS = (('Monday','Monday'), ('Tuesday','Tuesday'), ('Wednesday','Wednesday'), ('Thursday','Thursday'), ('Friday','Friday'), ('Saturday','Saturday'), ('Sunday','Sunday'))
name = models.CharField(max_length=50)
description = models.TextField()
category = models.CharField(max_length=50)
price = models.DecimalField(max_digits=6, decimal_places=2)
category = models.CharField(max_length=30, choices=CATEGORY_CHOICES)
order = models.PositiveSmallIntegerField(default=0, blank=True, null=True)
special = models.BooleanField(default=False)
day = models.CharField(max_length=30, choices=DAYS, unique=True, blank=True)
publish = models.DateField(auto_now=False, auto_now_add=False),
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
def __str__(self):
return self.name
我也试图按星期几(即星期一,星期二等)订购每日特价,我认为以下观点有效,但似乎是按ID订购物品
def specials(request):
specials_list = Item.objects.filter(special = True).order_by('day')
context = {
'specials_list': specials_list,
}
return render(request, 'menu/specials.html', context)
提前感谢您的帮助!
答案 0 :(得分:1)
除非在字段上设置了空白= False以及默认值,否则将使用选择框呈现包含“---------”的标签。要覆盖此行为,请将元组添加到包含None的选项中;例如(无,'您的显示字符串')。或者,您可以使用空字符串而不是空字符串,例如在CharField上。
因此,为了允许在任何元组中选择空白,只需添加上面引用的粗体文本
例如:
CATEGORY_CHOICES = (('Sandwich', 'Sandwich'), ('Salad', 'Salad'), ('Slider', 'Slider'), ('Side', 'Side'), ('Drink', 'Drink'), ('None', 'N/A'))
至于唯一性,您已经将一周中的日期设置为唯一。