我正在创建一个包含用户注册的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”实例