我有一個客戶模型和一個事件模型。事件模型是指客戶。客戶有很多事件。我的要求是當我得到客戶時,我需要客戶的最新事件對象。當我撥打客戶獲取API,它顯示了以下錯誤,django rest framework:<Objectname:Objectname object>不是JSON可序列化的
TypeError at /api/v1/customer
<Event: Event object> is not JSON serializable
我的模型
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__'
名單'Event'領域的休息 - 其中明確一個是防止序列化。 – arvindch
你在哪裏試着做序列化?如果你得到一個'CustomerEvent'實例,它應該序列化成什麼? – Sayse
@shadow - 它是不可序列化的'latest_event_name',因爲DRF不知道如何序列化查詢集結果 – Sayse