2012-11-12 93 views
0

假設以下Resources給出:Django的Tastypie - 如何獲得相關資源與單個請求

class RecipeResource(ModelResource): 
    ingredients = fields.ToManyField(IngredientResource, 'ingredients') 

    class Meta: 
     queryset = Recipe.objects.all() 
     resource_name = "recipe" 
     fields = ['id', 'title', 'description',] 


class IngredientResource(ModelResource): 
    recipe = fields.ToOneField(RecipeResource, 'recipe') 

    class Meta: 
     queryset = Ingredient.objects.all() 
     resource_name = "ingredient" 
     fields = ['id', 'ingredient',] 

HTTP請求myhost.com/api/v1/recipe/?format=json給出瞭如下回應:

{ 
    "meta": 
    { 
     ... 
    }, 
    "objects": 
    [ 
     { 
      "description": "Some Description", 
      "id": "1", 
      "ingredients": 
      [ 
       "/api/v1/ingredient/1/" 
      ], 
      "resource_uri": "/api/v1/recipe/11/", 
      "title": "MyRecipe", 
     } 
    ] 
} 

到目前爲止好。

但現在,我想用類似的東西交換的成分resource_uri( 「/ API/V1 /成份/ 1 /」):

{ 
    "id": "1", 
    "ingredient": "Garlic", 
    "recipe": "/api/v1/recipe/1/", 
    "resource_uri": "/api/v1/ingredient/1/", 
} 

爲了得到如下回應:

{ 
    "meta": 
    { 
     ... 
    }, 
    "objects": 
    [ 
     { 
      "description": "Some Description", 
      "id": "1", 
      "ingredients": 
      [ 
       { 
        "id": "1", 
        "ingredient": "Garlic", 
        "recipe": "/api/v1/recipe/1/", 
        "resource_uri": "/api/v1/ingredient/1/", 
       } 
      ], 
      "resource_uri": "/api/v1/recipe/11/", 
      "title": "MyRecipe", 
     } 
    ] 
} 

回答

1

答案是屬性全= TRUE:

成分= fields.ToManyField( 'mezzanine_recipes.api.IngredientResource',「ingred ients',full = True)

相關問題