Как установить множественный выбор в админке django - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть модель

class Event(models.Model):

    event_name = models.CharField(max_length=100, default="")
    event_organizer = models.ForeignKey(Organizer, on_delete=models.CASCADE)
    event_type = models.ForeignKey(Type, on_delete=models.CASCADE)
    event_city = models.ForeignKey(Citie, on_delete=models.CASCADE)
    event_tag = models.ForeignKey(Tag, on_delete=models.CASCADE)

У меня есть поле event_tag. Во время добавления формы события в админ-панели я хочу выбрать несколько тегов. как это сделать и как их сохранить

1 Ответ

1 голос
/ 09 ноября 2019

Поскольку вы определили event_tag как модель ForeignKey для Tag, вы не можете выбрать несколько тегов для одного события.

Однако, если вы хотите это сделать, вам следует определить свой Eventмодель, подобная этой:

class Event(models.Model):

    event_name = models.CharField(max_length=100, default="")
    event_organizer = models.ForeignKey(Organizer, on_delete=models.CASCADE)
    event_type = models.ForeignKey(Type, on_delete=models.CASCADE)
    event_city = models.ForeignKey(Citie, on_delete=models.CASCADE)
    event_tag = models.ManyToManyField('Tag')

Теперь, если вы зарегистрируете модель Event и Tag в администраторе, вы сможете выбрать несколько тегов для одного события.

Редактировать

Как вы упомянули в комментариях, ваша модель Tag имеет поле is_active, и вы хотите ограничить выбор теми, которые активны.

Это можно сделать с помощью limit_choices_toв М2М подано:

class Event(models.Model):
    #...
    event_tag = models.ManyToManyField('Tag', limit_choices_to={'is_active': True})
...