2009-09-21 2 views
0

мне нужно создать следующее соотношение:ModelForm для OneToMany отношений

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

Использование 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?

+0

Вставьте свои определения моделей. Хотя похоже, что вы только что создали отношение к неправильной модели. –

ответ

1

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

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

Чтобы представить эту форму, посмотрите на документацию inline formsets.

+0

Совершенно верно, независимо от того, насколько мне не нравятся встроенные формы. –

Смежные вопросы