Использовать хотя бы одно значение в отношении многих ко многим, в Django?

У меня есть отношение "многие ко многим" в модели Django (1.4).

class UserProfile(models.Model):
    foos = models.ManyToManyField(Foo)

Я хочу, чтобы каждый пользователь (профиль) имел хотя бы один Foo. Foos может иметь нулевой или более пользовательский (профили) s.

Мне бы очень хотелось, чтобы это выполнялось на уровне модели и администратора, но достаточно обеспечить его в админах.

Если я правильно понимаю, "многие" в Django-talk имеют нулевое значение или больше.

Мне нужно отношение ManyToOneOrMore. Как я могу это сделать?

Спасибо,

Крис.

Ответ 1

Вы не можете принудительно применять это на уровне модели как данные @Greg, но вы можете применить ее к форме, просто сделав нужное поле. Это не помешает кому-либо с доступом на уровне оболочки вручную создать UserProfile без foo, но это заставит любого использовать метод создания формы на основе браузера.

Ответ 2

К сожалению, я не думаю, что это возможно на уровне модели, потому что данные ManyToMany сохраняются отдельно от других полей модели. Вы должны иметь возможность принудительно применять его на уровне администратора, указав настраиваемую форму и написать метод clean() в форме.