Ограничить параметры ChoiceField Django - PullRequest
0 голосов
/ 10 марта 2020

спасибо за ваше время: я хотел бы знать, есть ли способ ограничить опцию в поле выбора, если другое поле начинается с буквы 'A': в основном я хочу, чтобы пользователь не позволял устанавливать выбор (2, 'GATO') на Animal.tipo, если его имя начинается с буквы 'a' на People.nome

models.py:

from django.db import models
from django.core.validators import RegexValidator



class People(models.Model):
    nome = models.CharField(max_length=200)
    birthday_date = models.DateTimeField()
    cpf = models.CharField(max_length=11, validators=[RegexValidator(r'^\d{1,10}$')])

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

class Animal(models.Model):
    field_choices = [
        (1, 'CACHORRO'),
        (2, 'GATO'),
        (3, 'OUTRO'),
    ]
    pessoa = models.ForeignKey(People, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    tipo = models.IntegerField(choices=field_choices)
    custo = models.DecimalField(max_digits=7, decimal_places=2)

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

    def cant_have_cat(self):
        self.maiusculo = self.pessoa.upper
        if self.maiusculo[0] == 'A':
            self.tipo != 2


...