Как сделать поле «многие ко многим» необязательным в Django? - PullRequest
165 голосов
/ 27 марта 2010

Если у вас есть отношение многие ко многим (related_name, а не through), и вы пытаетесь использовать интерфейс администратора, вам необходимо ввести одно из отношений, даже если оно не должно существовать для вам создать первую запись.

Я создаю приложение, которое является организатором событий. Представьте, что у нас есть модели Event и Group, связанные многими-многими.

Джанго related_name создает еще одну таблицу с индексами двух других таблиц.
Но я не вижу причин, по которым эта дополнительная таблица содержит для заполнения.

Если я работаю с базой данных через phpMyAdmin, я могу создать Group без регистрации Event, поскольку соединение между ними происходит только через отдельную таблицу, и на данном уровне нет принудительного применения значения базы данных.

Как сделать так, чтобы интерфейс администратора реализовал это?
Как сделать поле «многие ко многим» необязательным в Django?

1 Ответ

289 голосов
/ 27 марта 2010

Если вы хотите иметь возможность указать отношение ManyToMany без необходимости его использования, просто используйте blank=True:

class Group(models.Model):
    ...
    events = models.ManyToManyField(Event, blank=True)
...