我有以下型号
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)
那么如何从confirm_method字段中排除它们已经选择的值?
如果是来自db,我知道我可以做choices = ActionConfirm.objects.exclude(choice__in = selected)
但是当它来自元组元组时我不知道该怎么做。
答案 0 :(得分:2)
您没有显示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]