我正在我的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'......我真的不明白这条道路是什么。
谢谢你的帮助,我被困住了!
答案 0 :(得分:2)
资源的路径类似于
"appname.api.classname"
并且不要忘记将其放入引号中,因为是的,当您想要使用它时它尚未定义。
答案 1 :(得分:0)
您还可以导入DatePeopleResource,然后使用它来定义与之的关系。 例如:
from ..api import DatePeopleResource
class EventResource(ModelResource):
event = fields.ForeignKey(DatePeopleResource, 'event')
通过这种方式,代码更清晰。