python - 当字段有选择时,Django模型保存稀有字符串
问题描述
我有以下型号:
class Service(CustomModel):
item = models.ForeignKey('inventory.ProductItem', on_delete=models.PROTECT, related_name='services', verbose_name=_("Artículo"))
reference = models.ForeignKey('operations.Sale', on_delete=models.PROTECT, related_name='services', verbose_name=_("Referencia"))
client_name = models.CharField(max_length=100, verbose_name=_("Nombre del Cliente"))
client_phone = models.CharField(max_length=10, verbose_name=_("Teléfono del Cliente"))
comment = models.TextField(verbose_name=_("Observaciones"))
class Meta:
verbose_name = _("Servicio")
verbose_name_plural = _("Servicios")
def __str__(self):
return "[{}] {}/{}/{}".format(self.id, self.client_name, self.item.serial_number, self.item.product.name)
def save(self, *args, **kwargs):
new = False if self.id else True
super().save(*args, **kwargs)
if new:
initial_status = ServiceStatus()
initial_status.service_id = self.id
initial_status.status = SERVICE_STATE_RECEIVED,
initial_status.save()
SERVICE_STATE_RECEIVED = 'RECEIVED'
SERVICE_STATE_WAITING_FOR_ASSESSMENT = 'WAITING_FOR_ASSESSMENT'
SERVICE_STATE_WARRANTY = 'WARRANTY'
SERVICE_STATE_QUOTED = 'QUOTED'
SERVICE_STATE_SCHEDULED = 'SCHEDULED'
SERVICE_STATE_REPAIRING = 'REPAIRING'
SERVICE_STATE_DOWN = 'DOWN'
SERVICE_STATE_FINISHED = 'FINISHED'
SERVICE_STATE_DELIVERED = 'DELIVERED'
SERVICE_STATE_CHOICES = (
(SERVICE_STATE_RECEIVED, _("Recibido")),
(SERVICE_STATE_WAITING_FOR_ASSESSMENT, _("En Evaluación")),
(SERVICE_STATE_WARRANTY, _("En Garantía")),
(SERVICE_STATE_QUOTED, _("Cotizado")),
(SERVICE_STATE_SCHEDULED, _("Programado")),
(SERVICE_STATE_REPAIRING, _("En Reparación")),
(SERVICE_STATE_DOWN, _("Baja")),
(SERVICE_STATE_FINISHED, _("Servicio Concluido")),
(SERVICE_STATE_DELIVERED, _("Entregado")),
)
class ServiceStatus(CustomModel):
service = models.ForeignKey(Service, on_delete=models.PROTECT, related_name='status', verbose_name=_("Servicio"))
status = models.CharField(max_length=25, choices=SERVICE_STATE_CHOICES, verbose_name=_("Estatus"))
timestamp = models.DateTimeField(auto_now=True, verbose_name=_("Fecha y Hora"))
comment = models.TextField(null=True, blank=True, verbose_name=_("Comentarios"))
update = False
class Meta:
verbose_name = _("Estado del Servicio")
verbose_name_plural = _("Estados de los Servicios")
def __str__(self):
return "[{}] {}/{}/{}".format(self.id, self.service.id, self.status, self.timestamp)
如您所见,Service
创建实例时,它会自动创建 的实例ServiceStatus
,但 fieldServiceStatus.status
获取 wefgdsird 值:
我相信Django无法管理编码,但我找不到我做错了什么。
解决方案
status
由于尾随逗号,您正在分配一个元组。
initial_status.status = SERVICE_STATE_RECEIVED,
做:
initial_status.status = SERVICE_STATE_RECEIVED
推荐阅读
- javascript - 如何使用 Jquery 或 javascript 清除缓存?
- java - 如何在 PDFBOX 中绘制填充多边形?
- windows - Windows 10:如何确定批处理文件是否正在从网络映射驱动器运行
- oracle - 想通过pl/sql程序将excel作为邮件附件发送
- flutter - Flutter 应用程序无法呈现错误“底部被无限像素溢出”
- typescript - 有没有办法在代码中触发打字稿编译器错误
- go - 使用 zipkin-go 完成追踪
- spring - 是否可以在春季为 bean 创建嵌套的自定义范围?
- python - Docker 无法运行
- c# - 是否可以为绑定设置动画?