外键字段问题-无法分配“ 1”:必须是“ EstadoPessoa”实例

时间:2019-05-29 21:00:03

标签: python django

我正在创建一个包含用户注册的django应用,但是当我尝试设置指示用户状态(未定义,想要或缺失)的外键时,我陷入了困境。基本上,“ EstadoPessoa”具有2个字段:一个字段用于ID,另一个字段用于状态名称。我创建了一个选择元素-在迁移过程中会动态填充自身-并将其应用于外键字段(如PessoasProcuradas类中所示)。

Models.py

class GerenciadorEstados(models.Manager):
    def estados_possiveis(self):
        from django.db import connection

        cursor = connection.cursor()
        cursor.execute("""
            SELECT ep.id_estado_pessoa, ep.nome_estado
            FROM estado_pessoa ep
            ORDER BY ep.id_estado_pessoa ASC""")

        lista_estados = cursor.fetchall()
        return lista_estados

class EstadoPessoa(models.Model):
    id_estado_pessoa = models.AutoField(primary_key=True)
    nome_estado = models.CharField(max_length=25)

    objects = GerenciadorEstados()

    class Meta:
        db_table = 'estado_pessoa'

class PessoasProcuradas(models.Model):
    ESTADO_PESSOA = EstadoPessoa.objects.estados_possiveis()

    cpf = models.CharField(verbose_name='CPF', primary_key=True, max_length=11, null=False, blank=False)
    nome_completo = models.CharField(verbose_name='Nome completo do indivíduo', max_length=50, blank=False, null=False)
    estado_pessoa_id_estado_pessoa = models.ForeignKey(EstadoPessoa, models.PROTECT, db_column='estado_pessoa_id_estado_pessoa', verbose_name='Estado do indivíduo', blank=False, null=False, choices=ESTADO_PESSOA, default=1)
    imagem_individuo = models.ImageField(verbose_name='Imagem do indivíduo', blank=True, null=True)

    class Meta:
        db_table = 'pessoas_procuradas'

Forms.py

class CadastroPessoas(ModelForm):
    class Meta:
        model = PessoasProcuradas
        fields = ['nome_completo', 'cpf', 'estado_pessoa_id_estado_pessoa', 'imagem_individuo']

Views.py

def adicionar_individuo(request):
    from django.http import HttpResponseRedirect
    from .forms import CadastroPessoas

    form = CadastroPessoas(request.POST, request.FILES or None)

    if form.is_valid():
        form.save()
        return HttpResponseRedirect('../results/usuario-adicionado')

    return render(request, 'management/adicionar-individuo.html', {'form': form})

提交表单时,出现以下错误: 无法分配“ 1”:“ PessoasProcuradas.estado_pessoa_id_estado_pessoa”必须是“ EstadoPessoa”实例

0 个答案:

没有答案