如果在第一个中已经选择了,则从重复的ForeignKey中删除选择值



我有模型Category:

class Category(models.Model):
    name = models.CharField("Category Name", max_length=120, default='', null=True, blank=True)

和模型Organization

class Organization(models.Model):
    name = models.CharField("Organization name", max_length=120, default='')
    m_primary_category = models.ForeignKey('Category', null=True, blank=True, default='', related_name="+", verbose_name='Primary Category')
    m_secondary_category = models.ForeignKey('Category', null=True, blank=True, default='', related_name="+", verbose_name='Secondary Category')

当选择Primary &时,用户必须首先添加类别,然后在组织模型中添加;次要的领域。

问题是:如果选择已经在primary中被选中,如何从secondary中隐藏/删除类别?

的例子:—用户在"分类模型"中添加:Cat1、Cat2和Cat3。—用户添加:组织名称:Org,选择"主类别:Cat1"。那么"二级类别"中可用的类别必须是:Cat2, Cat3。

如果您希望在不提交表单的情况下显示和隐藏元素,您将需要一些javascript,使用jquery这应该是相当容易的

$('#id_m_primary_category').change(function(){
    // etc
});

当然不能信任用户的输入,所以你仍然需要验证表单

def clean(self):
    if self.cleaned_data.get('m_primary_category') == self.cleaned_data.get('m_secondary_category'):
        raise forms.ValidationError('No')

最新更新