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/

Другие вопросы по тегам