tastypie资源之路

时间:2013-02-12 07:37:17

标签: django api django-models tastypie

我正在我的tastypie api中设置相关字段。

我的api.py文件中有这个:

class PeopleResource(ModelResource):
event_id = fields.ForeignKey(EventResource,'event', full=True)
answer_link = fields.ForeignKey(DatePeopleResource,'datepeople', full=True, related_name='datepeople')
class Meta:
    queryset = EventPeople.objects.all()
    resource_name = 'people'
    filtering = {
        'event_id' : ALL,
        'phone_number' : ALL,
        'name' : ALL,
        'answer' : ALL,
    }
    authorization = Authorization()



class DatePeopleResource(ModelResource):
event = fields.ForeignKey(EventResource,'event')
event_date = fields.ForeignKey(DateResource,'event_date')
event_person = fields.ForeignKey(PeopleResource,'event_person', related_name='people')
class Meta:
    queryset = DatePeople.objects.all()
    resource_name = 'datepeople'
    filtering = {
        'event' : ALL,
        'event_person' : ALL,
        'event_date' : ALL,
    }
    authorization = Authorization()

我的问题是与PeopleResource相关的DatePeopleResource字段有效,但第一个不起作用。 (与PeopleResource的DatePeopleResource相关的那个)

我想这是因为还没有定义DatePeopleResource。在tastypie doc中,看起来我必须在调用DatePeopleResource之前添加path.to.api.resource,如下所示:

answer_link = fields.ForeignKey(path.to.resource.DatePeopleResource,'datepeople', full=True, related_name='datepeople')

但我不知道路径是什么!我试过'资源','api'......我真的不明白这条道路是什么。

谢谢你的帮助,我被困住了!

2 个答案:

答案 0 :(得分:2)

资源的路径类似于

"appname.api.classname"

并且不要忘记将其放入引号中,因为是的,当您想要使用它时它尚未定义。

答案 1 :(得分:0)

您还可以导入DatePeopleResource,然后使用它来定义与之的关系。 例如:

from ..api import DatePeopleResource

class EventResource(ModelResource):
     event = fields.ForeignKey(DatePeopleResource, 'event')

通过这种方式,代码更清晰。