我正在做一个项目,发现一个对我没有意义的错误。在这些行中:
customer = Customer.objects.get_or_create(phone=from_number)
store = Store.objects.get(phone=to_number)
logging.info("CUSTOMER TYPE: {}".format(type(customer)))
logging.info("STORE TYPE: {}".format(type(customer)))
在日志中,客户类型为CUSTOMER TYPE: <class 'tuple'>
,但商店类型为STORE TYPE: <class 'orders.models.Store'>
。
这两个类都在同一个项目和应用中,都以相同的方式包含在(from orders.models import Customer, Store
)中
如果有帮助,这些类别是:
class Customer(models.Model):
name = models.CharField(max_length=200, verbose_name="Nombre")
phone = models.CharField(max_length=13, verbose_name="Teléfono")
last_location = models.CharField(max_length=200, verbose_name="Ultima ubicación")
def __str__(self):
return self.name
class Store(models.Model):
service_hours = models.ForeignKey(ServiceHours, related_name="stores", on_delete=models.PROTECT)
name = models.CharField(max_length=100, verbose_name="Nombre")
phone = models.CharField(max_length=13, verbose_name="Celular")
enabled = models.CharField(max_length=200)
address = models.CharField(max_length=200, verbose_name="Dirección")
dialogflow_id_project = models.CharField(max_length=30, blank=False, null=False, default='pedidoswhatsapp-hcujca')
file_settings_name = models.CharField(max_length=30, blank=False, null=False, default='pedidos_dialogflow.json')
def __str__(self):
return self.name
我不明白代码如何将客户视为元组。任何帮助都将非常有帮助。
因为.get_or_create(…)
[Django-doc] 总是返回2元组。一个2元组,其中第一个包含所获得(或构造)的对象,第二个为指示是否已创建的布尔值。在文档中将其指定为:
返回的元组
(object, created)
,其中object
是检索到的对象或创建的对象,并且created
是一个布尔值,指定是否创建了新对象。
例如,您可以使用迭代拆包来摆脱第二个布尔值:
customer, __ = Customer.objects.get_or_create(phone=from_number)
.get(…)
另一方面,[Django-doc]仅返回对象(如果查询返回零或一个以上元素,则会引发错误)。同样也不需要返回布尔值,因为.get(…)
如果不存在则不会创建对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句