【发布时间】:2020-01-31 05:54:09
【问题描述】:
我正在尝试仅检索与出租物业“单元”关联的“约会”中的部分字段。在 UnitSerializer 中,我调用 SerializerMethodField() 对“约会”字段进行反向查找。这效果很好。但是,查询集返回每个对象中的所有字段(id、时间、单位、人员、潜在客户),而我只需要几个(id、时间)。
我在查询集上尝试了 .values(),如下所示:
queryset = instance.appointment_set.values('id', 'appointment_time')
但是我得到 "Got KeyError 在尝试获取序列化程序 AppointmentSerializer 上的字段单元的值时。\n序列化程序字段可能命名不正确,并且与 dict 实例上的任何属性或键都不匹配。\n原始异常文本是: 单位。”
请注意确定是否需要所有代码,但这是必不可少的。
模型
class Appointment(models.Model):
appointment_time = models.DateTimeField()
unit = models.ForeignKey(Unit, on_delete=models.CASCADE)
staff = models.ForeignKey(Staff, on_delete=models.CASCADE)
prospect = models.ForeignKey(Prospect, on_delete=models.CASCADE)
序列化器
class AppointmentSerializer(serializers.ModelSerializer):
class Meta:
model = Appointment
fields = ['id','appointment_time']
class UnitSerializer(serializers.ModelSerializer):
appointment = SerializerMethodField()
class Meta:
model = Unit
fields = ['id', 'address', 'appointment']
def get_appointment(self, instance):
cutoff = _datetime.date.today() + timedelta(hours=72)
queryset = instance.appointment_set.exclude(appointment_time__gt=cutoff)
return AppointmentSerializer(queryset, many=True).data
【问题讨论】:
标签: django django-rest-framework