【问题标题】:Tastypie - Accessing Field Data Through ForeignKey FieldTastypie - 通过 ForeignKey 字段访问字段数据
【发布时间】:2012-07-24 20:57:39
【问题描述】:

我有一个 Tastypie 资源 (TaskImagesResource),当向 API 发出请求时,它需要覆盖 obj_get_list 函数以返回正确的数据。我需要访问另一个资源(TaskResource,它与 TaskImagesResource 具有 OneToOne 关系)的属性才能执行此操作。我可以使用 get_related_resource() 获取任务资源的实例,但我不知道如何从对象中获取数据。这是我现在的代码:

class TaskResource(ModelResource):
    target = fields.OneToOneField(TargetResource, 'target', full=True)
    activity = fields.ForeignKey(ActivityResource, 'activity')
    time = fields.OneToOneField(TaskEventTimeResource, 'time', full=True)

    class Meta:
        queryset = Task.objects.all()
        filtering = {
            'id' : ALL,
            'activity' : ALL_WITH_RELATIONS,
     }

class TaskImagesResource(Resource):
    task = fields.ForeignKey(TaskResource, 'task', full=True)
    camera = fields.CharField()

    def obj_get_list(self, request, **kwargs):
        task_resource = self.task.get_related_resource(self)
        task = Task.objects.get(id=task_resource.id)
        image_list = task.sorted_imageinstances(self.camera)

但我收到错误消息“int() 参数必须是字符串或数字,而不是 'CharField'”,因为 task_resource.id 是 CharField 对象而不是数据本身。如何访问实际的 Field 数据?

【问题讨论】:

    标签: python django api tastypie


    【解决方案1】:

    试试:

    task = Task.objects.get(id=int(task_resource.id))
    

    【讨论】:

    • 无法将 CharField 转换为整数。
    • 看来task_resource = self.task.get_related_resource(self) 有问题。尝试打印/记录task_resource 的输出以进行调试。
    猜你喜欢
    • 1970-01-01
    • 2017-12-15
    • 2018-02-01
    • 2018-06-09
    • 1970-01-01
    • 2017-04-17
    • 2012-09-27
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多