gpt4 book ai didi

Django:将继承(嵌套)值呈现为 forms.ModelForm 中的列表

转载 作者:行者123 更新时间:2023-12-02 09:01:44 25 4
gpt4 key购买 nike

我正在尝试在我的模型“TipoDocumento”中显示表单中的下拉列表(我需要将“nombre_corto”列显示为列表)。

1) 我的模型名称是“Cocinera”,Cocinera 继承 self 的模型“Usuario”。
2)“Usuario”从我的模型“Documento”继承了它的“documento”字段。
3)“Documento”模型继承了“TipoDocumento”的“tipo_documento”字段。

但我无法通过“CocineraForm”表单从“Cocinera”模型将“tipo_documento”呈现为列表。我收到一个错误,详细信息在最后。

我的所有模型都在“nucleo”应用程序中。只有渲染的表单位于我的其他应用程序“app_administrador”中。

==================================

Nucleo - 该应用程序名为 nucleo

==================================

型号:

模型“TipoDocumento”

from django.db import models

class TipoDocumento(models.Model):
nombre_corto = models.CharField(blank=False, null=False, max_length=25)
nombre_largo = models.CharField(blank=False, null=False, max_length=100)

def __str__(self):
return self.nombre_corto

模型“Documento”

class Documento(models.Model):

def __str__(self):
return self.codigo

tipo_documento = models.ForeignKey(TipoDocumento, on_delete=models.SET_NULL, null=True)
codigo = models.CharField(max_length=25)

模型“Usuario”:

class Usuario(models.Model):
class Meta:
abstract = True

nombre = models.CharField(blank=False, null=False, max_length=200)
apellido_paterno = models.CharField(blank=False, null=False, max_length=100)
apellido_materno = models.CharField(blank=True, null=False, max_length=100)
fecha_de_nacimiento = models.DateField(blank=False, null=False)
documento = models.OneToOneField(Documento, on_delete=models.CASCADE, blank=False, null=True)

模型“Cocinera”:

class Cocinera(Usuario):

habilidades = models.ForeignKey(Habilidad, blank=True, null=True)
experiencia_con_mascotas = models.BooleanField(default=False)


def __str__(self):
return self.nombre

==================================

app_administrador

==================================

我的表格

class CocineraForm(forms.ModelForm):
class Meta:
model = Cocinera
fields = ['nombre', 'apellido_paterno', 'apellido_materno', 'tipo_documento', 'documento', 'fecha_de_nacimiento', 'direccion', 'telefono_o_celular' , 'latitud_y_longitud',
'genero', 'antecedentes_policiales', 'foto']
widgets = {
'fecha_de_nacimiento': DateInput()
}

相关问题:据此Use Django ModelChoice field to create pulldown to lookup table?

我添加了:

tipo_documento = forms.ModelChoiceField(queryset=TipoDocumento.objects.all(),
empty_label=None)

但是当我运行我的应用程序时,我得到:

File "/home/ogonzales/Escritorio/web_envs/
cocineras_env/lib/python3.5/site-packages/django/forms/models.py",
line 277, in __new__raise FieldError(message)
django.core.exceptions.FieldError: Unknown field(s)
(tipo_documento) specified for Cocinera

最佳答案

当然,您可以像以前一样在表单上添加其他字段。

但是您不允许在字段列表中添加非模型字段“tipo_documento”,因为这仅指模型中定义的字段。

所以你应该很适合:

class CocineraForm(forms.ModelForm):
class Meta:
model = Cocinera
fields = ['nombre', 'apellido_paterno', 'apellido_materno', 'documento',
'fecha_de_nacimiento', 'direccion', 'telefono_o_celular', 'latitud_y_longitud',
'genero', 'antecedentes_policiales', 'foto']
widgets = {
'fecha_de_nacimiento': DateInput()
}

tipo_documento = forms.ModelChoiceField(queryset=TipoDocumento.objects.all(),
empty_label=None)

请注意字段列表中缺少的“tipo_documento”。

关于Django:将继承(嵌套)值呈现为 forms.ModelForm 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47444151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com