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