как получить другое значение ModelField на моей фактической проверки формы? DJANGO - PullRequest
0 голосов
/ 29 марта 2020

Спасибо за ваше время:

Я хочу установить Ошибка проверки с данными, которые уже записаны в другой класс модели.

Models.py

class People(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='person')
    birthday = models.DateField()
    cpf = models.CharField(max_length=11, validators=[RegexValidator(r'^\d{1,10}$')])

    def __str__(self):
        return '%s' % (self.user)


class Pets(models.Model):
    pessoa = models.ForeignKey(People, on_delete=models.CASCADE)
    nome = models.CharField(max_length=150)
    custo = models.DecimalField(max_digits=7, decimal_places=2)
    tipo = models.SmallIntegerField()

    def __str__(self):
        return '%s - %s' % (self.pessoa, self.nome)

Forms.py:

class PetForm3(forms.ModelForm): #SELECIONAR FORM PELO FORMS.PY
    field_choices = [
        (1, 'CACHORRO'),
        (2, 'GATO'),
        (3, 'ANDORINHA')
    ]

    nome = forms.CharField(max_length=100)
    custo = forms.DecimalField(max_digits=7, decimal_places=2)
    tipo = forms.ChoiceField(choices=field_choices)

    class Meta:
        prefix = 'pet'
        model = Pets
        fields = ['nome', 'custo', 'tipo']

    def clean_tipo(self):
        data = self.cleaned_data.get("tipo")
        data_pessoa = self.cleaned_data.get("pessoa")
        slug = slugify(data_pessoa)
        if slug.startswith('a'):
            data == 2
            raise forms.ValidationError('nomes com A nao podem ter gatos')
        return data

У меня есть эти две модели, и Pets - это много для людей, которых я хотел бы взять атрибуты People, такие как birthday и cpf, в clean_method из PetForm3.

и любят получать '' pessoa '', без необходимости отображать поле из Pets в чистом методе.

Я могу добиться чего-то подобного с помощью request.user в views.py, но я бы хотел получить это в clean_method at forms.py

...