我有模型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')