我有一个客户模型和一个事件模型。事件模型指的是客户。顾客有很多活动。我的要求是,当我得到客户,我需要客户的最新事件对象。当我调用customer时,它会显示以下错误,
TypeError at /api/v1/customer 不能将JSON序列化
我的模特
class Customer(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=20, unique=True)
#some more fields to go
def __str__(self):
return str(self.name)
def latest_event_name(self):
"""Return latest event """
latest_event = self.customer_events.order_by('-event_date').last()
return latest_event if latest_event else None
class Event(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
event_name = models.CharField(max_length=200, unique=True)
customer = models.ForeignKey(customer_models.Customer, db_index=True, on_delete=models.SET_NULL,
related_name='customer_events', null=True)
#some more fields to go串行器
class CustomerSerializer(serializers.ModelSerializer):
latest_event_name = serializers.ReadOnlyField()
class Meta:
model = Customer
fields = '__all__'发布于 2017-03-07 08:34:02
中的事件。
def latest_event_name(self): ...您必须为事件模型创建一个序列化程序,因为该方法返回模型事件的一个实例。
我认为,如果您只是将事件的id作为str返回,您就不会遇到这个问题,因此您就不必为事件模型创建一个均衡器。
发布于 2017-03-07 10:25:50
无论如何,现在通过下面的方法解决了这个问题。
def latest_event(self):
latest_event = self.customer_events.order_by('-event_date').last()
eventDict = None
if latest_event:
eventDict = {"event_id": latest_event.id, "event_name": latest_event.event_name}
return eventDict不确定这是否是正确的方法。
https://stackoverflow.com/questions/42642842
复制相似问题