Спасибо за ваше время:
Я хочу установить Ошибка проверки с данными, которые уже записаны в другой класс модели.
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