如何限制模型上的多个字段?

时间:2010-04-27 13:45:03

标签: django manytomanyfield

我想检查一下我在很多地方设置的关系不超过3个。

我尝试使用clean方法执行此操作:

if self.tags.count()>3:
  raise ValidationError(_(u'You cannot add more than 3 tags'))

self.tags不返回当前更新...仅保存对象。

你有想法访问它们吗?

由于

2 个答案:

答案 0 :(得分:3)

你可以通过几种方式做到这一点。

首先,您可以将其作为模型的save()

的一部分

在你的模型中,做一下这样的事情:

def save(self):
  # this may not be the correct check... but it will be something like this
  if self.tags.count() > 3: 
    # raise errors here
  else:
    super(MODEL_NAME,self).save()

或者你可以在视图中手动完成。

def some_view(request):

  # all the request.POST checking goes here

  the_model = form.save(commit=False)
  if the_model.tags.count() > 3:
    #error stuff
  else:
    the_model.save()

答案 1 :(得分:-2)

布兰特是对的。但是,我认为更好的方法是使用三个单独的ForeignKey字段而不是一个ManyToMany。