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

202

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

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

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

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

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

Дюжина
источник

Ответы:

348

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

class Group(models.Model):
    ...
    events = models.ManyToManyField(Event, blank=True)
Людвик Траммер
источник
7
Это решает проблему. Использование пробела было не столь очевидно для меня, потому что я думал, что многие создали таблицу, которая связывает события с группами (events = models.ManyToManyField (Event, related_name = "groups", blank = True). Поэтому было не понятно, как использовать пробел, так как Event фактически не является полем в групповой таблице. В любом случае, это сработало, так что спасибо !!!
DZ.
9
@omouse Я думаю, да, пусто для проверки django, а пусто для базы данных. В таком случае (как для IntegerField) нет смысла ставить одно без другого, я думаю
lajarre
17
Вы действительно должны иметь null=True? У меня сложилось впечатление, что это nullникак не повлияет на ManyToManyполя: stackoverflow.com/questions/18243039/…
Тайлер Хейс,
5
Да, @TylerHayes прав. null = True в основном не работает и не имеет смысла в контексте ManyToMany. Я открыт, чтобы показать, как я ошибаюсь.
Бен Робертс
7
null = True не требуется, по крайней мере, начиная с Django 1.5.
Вилле Лаурикари