Джанго модельформ чистый - PullRequest
0 голосов
/ 18 декабря 2009

Я нашел несколько постов, которые похожи по своей природе на это, но они не были ясны на 100%, так что вот так:

В моих представлениях у меня есть представление add_album, которое позволяет пользователю загружать альбом. Я хотел бы очистить форму (AlbumForm), чтобы проверить, является ли этот альбом уникальным для исполнителя.

Мой AlbumForm выглядит так:

class AlbumForm(ModelForm):
  class Meta:
    model = Album
    exclude = ('slug','artist','created','is_valid', 'url', 'user', 'reported')

  def clean_name(self):
    super(AlbumForm, self).clean()
    cd = self.cleaned_data
    try:
      Album.objects.get(slug=slugify(cd['name']), artist=artist)
      raise forms.ValidationError("Looks like an album by that name already exists for this artist.")
    except Album.DoesNotExist:
      pass

    return cd

Так что это то, что я хотел бы сделать.

Мои вопросы: есть ли способ передать объект artist из моего представления в форму, чтобы я мог использовать этот экземпляр artist в методе clean?

Я думаю, что смотрю на переопределение __init__ метода ModelForm, но я не уверен, как это сделать.

1 Ответ

4 голосов
/ 18 декабря 2009

Лучший способ сделать это - на уровне модели со встроенной мета-опцией, unique_together.

Если у вас есть модель Album, то вы, вероятно, можете сделать что-то вроде этого:

def Album(models.Model):
   ...

   class Meta:
     unique_together = ("artist_id", "title")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...