Я создал многоканальное поле для модели. Когда эта модель сохранена,
Я хотел бы запустить валидатор в поле m2m.
Проблема : метод validate не вызывается; как в полях чужих.
Что я хочу сделать, так это то, что при сохранении модели я хочу сравнить значение
от этой модели до (скоро будет) связанной модели (мое поле FK делает это атм).
Я знаю, что это можно сделать в модели или в форме модели, но так как этот вид проверки
на всем протяжении проекта, я хотел бы иметь его в модельном поле, чтобы быть последовательным
в использовании полей отношения.
Пример модели:
class Member(models.Model):
''' Stores mailinglist members. These are no django-system users. '''
owner = models.ForeignKey(Owner)
first_name = models.CharField(max_length=80, blank=True)
last_name = models.CharField(max_length=80, blank=True)
categories = CustomManyToManyField(Category)
class Category(models.Model):
''' Categories corresponding to a site and system user. '''
owner = models.ForeignKey(Owner)
name = models.CharField(max_length=80)
Когда я создаю или обновляю участника и добавляю категорию, я хочу сравнить, если
member.owner == category.owner
. CustomManyToManyField
должен сделать эту проверку.
Каким-то образом я должен переопределить метод сохранения / проверки.
Если это невозможно, я прав, я могу создать собственный менеджер, чтобы получить это
поведение? Все, что мне нужно сделать, это сделать мой менеджер менеджером по умолчанию. (Никогда раньше этого не делал, но, похоже, это не так уж сложно).