我有一个Django项目,数据在Postgres数据库中。
我想创建一个带有ModelChoiceField的表单,在这里我可以选择在以前的查询集中获得的数据。
当我创建查询集从数据库中获取数据时:
list_result_queryset = BdimMaestraDatos.objects.filter(fecha_baja__isnull=True).values_list('nombre').distinct()
字符串
我得到这个结果:
<QuerySet [('PEDRO',), ('JUAN',), ('ANDRES',), ('PABLO',), ('SOFIA',)]>
型
当我在de模板中显示结果时,它们被提供了,但带有“脏”格式,如括号,逗号等。
请问,我怎么能在表格上显示出来呢?ModelChoiceField查询选项只查询名称PEDRO、JUAN、巴勃罗等,而不查询('PEDRO ',)、('JUAN',)等?
这是我的form.py
代码
from django import forms
from .models import BdimMaestraDatos,
lista_queryset_nombres_activos = BdimMaestraDatos.objects.filter(fecha_baja__isnull=True).values_list('nombre').distinct()
print('Resultado Queryset values list: %s' %lista_queryset_nombres_activos)
class MaestraDatosForm(forms.Form):
Seleccionar_Nombre = forms.ModelChoiceField(label="Nombre", queryset=lista_queryset_nombres_activos)
型
这是我的BdimMaestraDatos模型
class BdimMaestraDatos(models.Model):
nombre = models.CharField(db_column='NOMBRE', max_length=32, blank=True, null=True) # Field name made lowercase.
cc = models.CharField(db_column='CC', max_length=2, blank=True, null=True) # Field name made lowercase.
estado = models.DecimalField(db_column='ESTADO', max_digits=1, decimal_places=0, blank=True, null=True) # Field name made lowercase.
red = models.CharField(db_column='RED', max_length=32, blank=True, null=True) # Field name made lowercase.
ger = models.CharField(db_column='GER', max_length=32, blank=True, null=True) # Field name made lowercase.
est = models.TextField(db_column='EST', blank=True, null=True) # Field name made lowercase. This field type is a guess.
fecha_baja = models.DateField(db_column='FECHA_BAJA', blank=True, null=True) # Field name made lowercase.
fecha_alta = models.DateField(db_column='FECHA_ALTA', blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'BDIM_MAESTRA_DATOS'
型
谢啦,谢啦
1条答案
按热度按时间gg0vcinb1#
最后我解决了我的问题,现在数据显示在表单中。ModelChoiceField是干净的。
解决方案是在value_list中被过滤的字段之后添加参数
flat=True
。字符串
返回的结果是:
型
感谢大家!