django模型保存错误消息

时间:2010-10-21 09:57:03

标签: django django-models

如果此日期已存在,我想输出错误消息。 有人有想法吗?

class Bet(models.Model):

name = models.CharField(max_length=30, verbose_name='Name')
date = models.DateTimeField(verbose_name='Datum')

def __unicode__(self):
    return self.name

def save(self):
    newDate = self.date

    try:
        Bet.objects.get(date=newDate)
        ## error message and return to form

    except Bet.DoesNotExist:
        super(Bet, self).save()

2 个答案:

答案 0 :(得分:1)

您需要在模型的元部分中将unique_together添加到日期。

class Bet(models.Model):

    name = models.CharField(max_length=30, verbose_name='Name')  
    date = models.DateTimeField(verbose_name='Datum')  

    class Meta:
        unique_together = ('date')

或者在日期字段中添加唯一字符:

class Bet(models.Model):
    name = models.CharField(max_length=30, verbose_name='Name')  
    date = models.DateTimeField(verbose_name='Datum', unique=True)         

在您添加赌注的逻辑中,您将拥有以下内容:

def add_bet(request):  
    if request.method == 'POST':  
        bet_form = BetForm(request.POST)  
        if bet_form.is_valid():  
            #save bet  
        else:  
            create_user_message(request, "unsuccess", strip_tags(bet_form.non_field_errors())) 

尝试添加相同日期的投注将失败,打印如下消息:“此日期的投注已经存在”。

答案 1 :(得分:0)

Model validation就是您所需要的。