在Django模型中正确使用limit_choices_to

时间:2019-08-17 15:05:54

标签: python django python-3.x django-models django-2.2

请帮助我根据公司来限制模型团队的选择。现在,我将测试值“ 1”放到正确的位置(函数_limit_function)。但是如何根据所选公司动态限制它呢?

class CustomCompany(models.Model):

    name = models.CharField(max_length=30,
            default="None",
            unique=True
            )

class CustomTeam(models.Model):

    name = models.CharField(
            max_length=30,
            default="None"
            )

    company = models.ForeignKey(
            CustomCompany,
            on_delete=models.CASCADE,
            )


class CustomUser(AbstractUser):

    def _limit_function():
        return {"company__id":1}


    phone = models.CharField(
            max_length=20,
            blank=True
            )

    company = models.ForeignKey(
            CustomCompany,
            on_delete=models.CASCADE,
            default=1
            )

    team = models.ForeignKey(
            CustomTeam,
            on_delete=models.CASCADE,
            default=1,
            limit_choices_to = _limit_function()
            )

因此,我需要根据所选公司来限制团队价值的变化。请帮助了解如何执行此操作。

1 个答案:

答案 0 :(得分:0)

我认为这是您无法在models.py中完成的操作 该表单将在客户端浏览器中呈现,该客户端浏览器在数据输入期间无法访问您的models.py文件,除非您在输入数据时多次单击提交。 最好的方法是,用事件侦听器编写一个小的Java Script函数(类似:teamfield.addEventListener(“ keydown ...,on key code == 113)),该函数监视表单字段并根据选择对象进行更改在所选公司上。

相关问题