如何在django活塞座输出中显示外键而不是相关对象数据

如何在django活塞座输出中显示外键而不是相关对象数据,django,foreign-keys,extjs4,django-piston,Django,Foreign Keys,Extjs4,Django Piston,我使用最新的django活塞0.2.3rc1(但如果需要,可能会降级) 作为GET请求的结果(例如/api/maintenance/8),我看到: 我希望看到: { "message": "Something good happened on the server!", "data": { "maintenance_type": 1, "maintenance_tariff": 13, "maintenance_active": t

我使用最新的django活塞0.2.3rc1(但如果需要,可能会降级)

作为GET请求的结果(例如/api/maintenance/8),我看到:

我希望看到:

{
    "message": "Something good happened on the server!",
    "data": {
        "maintenance_type": 1,
        "maintenance_tariff": 13,
        "maintenance_active": true,
        "maintenance_date": "2011-09-20 00:00:00",
        "maintenance_house": 3,
        "maintenance_id": 8,
        "maintenance_client": 875,
    },
    "success": true
}

是的,这是一个不错的特性,但在我的例子中(Django与ExtJS的集成),我只需要外键。。如何将相关对象的数据替换为外键?

尝试将
maintenance\u house
更改为
maintenance\u house\u id
,并将classmethod添加到维护处理程序中:

class MaintenanceHandler(CsrfExemptBaseHandler):
    fields = ('maintenance_id', 'maintenance_client', 'maintenance_house_id', 'maintenance_type', 'maintenance_tariff', 'maintenance_date', 'maintenance_active')

    @classmethod
    def maintenance_house_id(self, instance):
        # instance is a Maintenance object
        return instance.maintenance_house.id

如果我在你的模型中正确理解了你的问题,你应该使用

maintenance_house_id = property(lambda self: self.maintenance_house.id) 
class MaintenanceHandler(CsrfExemptBaseHandler):
    fields = ('maintenance_id', 'maintenance_client', 'maintenance_house_id', 'maintenance_type', 'maintenance_tariff', 'maintenance_date', 'maintenance_active')

    @classmethod
    def maintenance_house_id(self, instance):
        # instance is a Maintenance object
        return instance.maintenance_house.id
maintenance_house_id = property(lambda self: self.maintenance_house.id)