ManyToManyField将选择限制为动态外部模型


class TrialRun(models.Model):
    product = models.ForeignKey(NewProduct, verbose_name='Product',)
class Component(models.Model):
    product = models.ForeignKey(NewProduct, verbose_name='Product',)
class TrialIssue(models.Model):
    trialrun = models.ForeignKey(TrialRun, verbose_name='Trial Run',)
    components = models.ManyToManyField(
        Component,limit_choices_to{product=trialrun.product})

我怎样才能实现(Component, limit_choices_to={product=trialrun.product})的思想?

我不能使用以下

def __init__(self, *args, **kwargs):
    super(TrialIssueForm, self).__init__(*args, **kwargs)
    # make sure we're editing a saved model
    if self.instance.id:
        self.fields['components'].queryset = Component.objects.filter(product=self.instance.trialrun.product)

无法在数据库级别定义它,因此您需要在表单中执行此操作。有一个关于为外键字段创建动态选择字段的示例,但它应该能够更改它以使用ManyToManyFields。

如果您还想在模型中检查它,则必须添加自己的自定义验证器,如下所述:https://docs.djangoproject.com/en/1.6/ref/models/instances/#validating-objects

相关内容

  • 没有找到相关文章

最新更新