Исключить выделение для объекта, присутствующего в ThroughModel - PullRequest
0 голосов
/ 17 октября 2018

У меня есть эти три модели и одна ModelForm.В его нынешнем виде я могу добавить одного и того же актера в фильм несколько раз.

Я ищу способ предотвратить это, введя набор запросов в поле лица CastingsForm, что исключит выбор Person, если его идентификатор ужеприсутствует в этом фильме.

Но .. Я не знаю, как это написать.

class Person(models.Model):
    first_name = models.CharField(max_length=32)
    last_name = models.CharField(max_length=32)

class Movie(models.Model):
    title = models.CharField(max_length=128)
    director = models.ForeignKey(Person, on_delete=models.SET_NULL, null=True)
    screenplay = models.ForeignKey(Person, on_delete=models.SET_NULL, null=True)
    starring = models.ManyToManyField(Person, through='ThroughModel')

class ThroughModel(models.Model):
    person = models.ForeignKey(Person, on_delete=models.SET_NULL, null=True)
    movie = models.ForeignKey(Movie, on_delete=models.CASCADE)
    role = models.CharField(max_length=128, null=True)

и эта форма

class CastingsForm(forms.ModelForm):
    role = forms.CharField(required=False)
    person = forms.ModelChoiceField(required=False)
    movie = forms.ModelChoiceField(Movie.objects.all(), required=False)

    class Meta:
        model = ThroughModel
        fields = ['role', 'person', 'movie']
...