Отношение ModelForm к OneToMany - PullRequest
       6

Отношение ModelForm к OneToMany

0 голосов
/ 21 сентября 2009

Мне нужно создать следующие отношения:

В одном «правиле» может быть много пользователей, но у одного пользователя может быть только одно правило.

Используя ForeignKey и ModelForm, я получаю поле выбора, чтобы выбрать только ОДНОГО пользователя, но я хочу выбрать много пользователей. Это не отношения ManyToMany, потому что у одного пользователя никогда не может быть более одного правила.

Вот определения моей модели:

class User(models.Model):
    name = models.CharField(_(u'Nome do usuário'), max_length=20)
    password = models.CharField(_('Senha'), max_length=20)
    active = models.BooleanField(default=True)

    def __unicode__(self):
        return self.name

class Rule(models.Model):
    ACTIONS = (
        ('liberate', 'Liberar'),
        ('block', 'Bloquear'),
    )

    users = models.ForeignKey(User)
    description = models.CharField(_(u'Descrição'), max_length=30)
    extensions = models.TextField(_(u'Extensões'), blank=True)
    words = models.TextField(_(u'Palavras'), blank=True)
    domains = models.TextField(_(u'Domínios'), blank=True)
    time = models.TimeField(_(u'Horário'))
    action = models.CharField(_(u'Ação'), max_length=8, choices=ACTIONS)

Есть ли способ сделать это с помощью ModelForm?

1 Ответ

1 голос
/ 22 сентября 2009

Одно «Правило» может иметь много пользователей, но у одного пользователя может быть только одно правило.

Для этого вам нужно переместить ваш внешний ключ в User. Таким образом, все пользователи A, B и C могут выбрать правило 1, но пользователь A никогда не сможет выбрать два внешних ключа для правил, поскольку имеется только одно поле.

Для представления формы посмотрите документацию inline formsets .

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