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)
1 ответ
Нет способа определить его на уровне базы данных, поэтому вам нужно сделать это внутри формы. Существует пример создания поля динамического выбора для поля ForeignKey, но он также должен иметь возможность изменить его для работы с ManyToManyFields.
Если вы также хотите, чтобы он был проверен внутри модели, вы должны добавить свой собственный валидатор, как описано здесь: https://docs.djangoproject.com/en/1.6/ref/models/instances/