Джанго формы исключают значения из поля выбора - PullRequest
0 голосов
/ 08 сентября 2010

У меня есть следующая модель

class ActionConfirm(models.Model):
    CONFIRM_METHOD =  (
        (u'ce', u'Certificate'),
        (u'tf', u'Trainee Feedback'),
        (u'ms', u'Multi Source Feedback'),
        (u'rp', u'Reflection upon Practice'),
        (u'ot', u'Other - Please add/describe')
    )

    confirm_method = models.CharField(max_length=2, choices=CONFIRM_METHOD)
    user = User

и следующая форма

class ActionConfirmForm(forms.ModelForm):
    class Meta:
        model = ActionConfirm

и я знаю, что могу получить их текущий выбор, выполнив

selected = ActionConfirm.objects.filter(user=user)

Так как мне исключить значения из поля verify_method, которые они уже выбрали?

Если бы это было из БД, я знаю, что мог бы сделать choices = ActionConfirm.objects.exclude(choice__in = selected), но я не знаю, как это сделать, когда это из кортежа кортежей.

1 Ответ

2 голосов
/ 08 сентября 2010

Вы не показываете отношения между ActionConfirm и ConfirmChoices. Почему confirm_method CharField, а не ForeignKey?

Однако, если вы можете получить выбранные варианты, вы можете исключить их в __init__ формы:

def __init__(self, *args, **kwargs):
    super(ActionConfirmForm, self).__init__(*args, **kwargs)
    selected_choices = whatever
    self.fields['confirm_method'].choices = [(k, v) for k, v in CONFIRM_METHOD
                                             if k not in selected_choices]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...