2017-08-09 23 views
1

我有一个模型中的字段,我想成为一个选择或空白。可能有尽可能多的空白项目,但对于其他所有其他项目都必须是唯一的,即在同一天可能不会有两个特殊项目。我想为一个模型,是唯一的选择,但可能是空白或无效

这里是我的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 

我也试图通过一周即的订购日期为每日特价(星期一,星期二,等等),我认为下面的看法是工作,但它似乎按照订单编号

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

“我有一个模型领域,我想成为一个选择或空白。” - 你指的是哪个领域? – solarissmoke

回答

1

From Django Docs

除非空白=假,使用默认的则含有“---------”将与选择框呈现一个标签一起设置在球场上。要覆盖此行为,请将元组添加到包含None的选项;例如(None,'Your String For Display')。或者,你可以使用空字符串而不是None,这是有道理的 - 比如在CharField上。

所以,你允许在你的任何一个元组的空白选择,只是从上面报价添加粗体文字

如:

CATEGORY_CHOICES = (('Sandwich', 'Sandwich'), ('Salad', 'Salad'), ('Slider', 'Slider'), ('Side', 'Side'), ('Drink', 'Drink'), ('None', 'N/A')) 

至于是唯一的,你已经有一周的日子被设置为独一无二的。

相关问题