0
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)
4

1 回答 1

0

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

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

于 2013-12-15T15:56:05.220 回答