Как ограничить множество полей на модели? - PullRequest
3 голосов
/ 27 апреля 2010

Я хотел бы убедиться, что на множестве многих полей установлено не более 3 отношений.

Я попробовал чистый метод, чтобы сделать это:

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

Но self.tags возвращает не текущие обновления ... только сохраненные объекты.

У вас есть идея получить к ним доступ?

Спасибо

Ответы [ 2 ]

3 голосов
/ 27 апреля 2010

Вы можете сделать это несколькими способами.

Во-первых, вы можете сделать это как часть сохранения модели ()

В вашей модели сделайте что-то вроде этого:

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()
0 голосов
/ 14 мая 2010

Брант прав. Тем не менее, я думаю, что лучший способ сделать то, что вы хотите, это использовать три отдельных поля ForeignKey вместо одного ManyToMany.

...