如果此日期已存在,我想输出错误消息。 有人有想法吗?
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()
答案 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就是您所需要的。