У меня есть две унаследованные модели, перечисленные ниже. Library.libtype_id
эффективно внешний ключ к LibraryType, когда libtype_id> 0. Я хочу представить это как ресурс ForeignKey в TastyPie, когда это условие выполнено.Tastypie - Ссылка на «ForeignKey»
Может кто-нибудь помочь мне? Я видел this, но я не уверен, что это то же самое? Большое спасибо!!
# models.py
class LibraryType(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=96)
class Library(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
project = models.ForeignKey('project.Project', db_column='parent')
libtype_id = models.IntegerField(db_column='libTypeId')
Вот мой api.py
class LibraryTypeResource(ModelResource):
class Meta:
queryset = LibraryType.objects.all()
resource_name = 'library_type'
class LibraryResource(ModelResource):
project = fields.ForeignKey(ProjectResource, 'project')
libtype = fields.ForeignKey(LibraryTypeResource, 'libtype_id')
class Meta:
queryset = Library.objects.all()
resource_name = 'library'
exclude = ['libtype_id']
def dehydrate_libtype(self, bundle):
if getattr(bundle.obj, 'libtype_id', None) != 0:
return LibraryTypeResource.get_detail(id=bundle.obj.libtype_id)
Когда я делаю это, однако я получаю следующее сообщение об ошибке на http://0.0.0.0:8001/api/v1/library/?format=json
"error_message": "'long' object has no attribute 'pk'",
Это немного лучше .. но теперь у меня есть проблема с моей get_detail. Как я должен ссылаться на это - я хочу ури? – rh0dium
Я не совсем уверен, что понимаю. Вам нужно 'dehydrate_libtype' вообще? – rockingskier
Как это соотносится с конкретным идентификатором ресурса? – rh0dium