Джанго: сохраняй многих ко многим в форме - PullRequest
2 голосов
/ 16 марта 2012

Мне достались такие модели:

Гости:

class Guest(models.Model):
    name = models.CharField(max_length=255)
    phone = models.CharField(max_length=255)
    # ...

и встречи:

class Meeting(models.Model):
    # some fields ...
    guests = models.ManyToManyField(through='GuestOnMeeting')

Многие гости могут быть на собрании. И один гость может посетить много встреч. И мы должны хранить некоторую дополнительную информацию в отношении. Таким образом, это много ко многим через некоторую модель.

class GuestOnMeeting(models.Model):
    guest = models.ForeignKey(Guest)
    meeting = models.ForeignKey(Meeting)

    # ... some other fields

Вопросы:

  1. Как определить форму для редактирования списка гостей собрания (приглашать гостей - позже мы будем использовать его для отправки смс-приглашений - без спама, гость почти наши друзья;)).

  2. У каждого гостя есть менеджер (manager = models.ForeignKey (Managers)). Как я могу изменить эту форму (или эти модели), чтобы позволить менеджерам приглашать только гостей, связанных с ними (с внешним ключом)?

1 Ответ

2 голосов
/ 16 марта 2012

Если вы хотите что-то похожее на админские строки, вы ищете inlineformset_factory .

>>> from django.forms.models import inlineformset_factory
>>> GuestOnMeetingInline = inlineformset_factory(GuestOnMeeting, Meeting)
>>> meeting = Meeting.objects.all()[0]
>>> form = MeetingForm(instance=meeting)
>>> formset = GuestOnMeetingInline(instance=meeting)

Вы можете добавить полей или передать пользовательские формы и / или наборов запросов to modelformset_factory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...