私はIngredientTypeオブジェクトのM2Mフィールドを保持するレシピモデルを持っています。このフィールド、別名:ingredient_listは、Ingredientオブジェクトを介して、有名な「スルー」モデルを使用して、余分なデータを自分のIngredientTypeに追加します。 これらは私のクラスである:django rest_frameworkを使用してシリアル化する方法スルーモデルManyToManyFields
class Recipe(models.Model):
user_profile = models.ForeignKey(UserProfile, null=True, blank = True)
name = models.CharField(max_length=200)
photo1 = models.ImageField(upload_to = 'images/recipies', help_text="This photo will show by default")
ingredient_list = models.ManyToManyField(IngredientType,through='Ingredient')
class Ingredient(models.Model):
ingredient_type = models.ForeignKey(IngredientType)
recipe = models.ForeignKey(Recipe)
amount = models.IntegerField()
units = models.CharField(max_length=4,choices=UNIT,
default=None, null=True, blank = True)
class IngredientType(models.Model):
name = models.CharField(max_length=200)
plural_name = models.CharField(max_length=200)
photo = models.ImageField(upload_to = 'images/ingredients')
is_main = models.BooleanField()
私はrest_frameworkを使用してそれらをシリアライズしようとしました:
class IngredientTypeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = IngredientType
fields=('name', 'plural_name', 'photo', 'is_main')
class IngredientSerializer(serializers.HyperlinkedModelSerializer):
ingredient_type = IngredientTypeSerializer(source = 'ingredient_type')
amount = serializers.Field(source='ingredient_type.amount')
units = serializers.Field(source='ingredient_type.units')
recipe = serializers.Field(source='Recipe.name')
class Meta:
model = Ingredient
fields=('amount', 'units')
class RecipeSerializer(serializers.ModelSerializer):
ingredient_list = IngredientSerializer(source='ingredient_list', many=True, read_only = True)
class Meta:
model = Recipe
fields = ('user_profile', 'name','photo1','ingredient_list')
が、これを実行しようとしたとき、私ははAttributeErrorを得る: 「IngredientType」オブジェクトには属性がありません'ingredient_type' はっきり
、私は行を変更:
ingredient_list = IngredientSerializer(source='ingredient_list', many=True, read_only = True)
しかし、私に成分データを取得せずに、それは動作しますが、シリアライザを変更、ある
ingredient_list = IngredientTypeSerializer(source='ingredient_list', many=True, read_only = True)
:へ
。 このリンクを使用しました: Include intermediary (through model) in responses in Django Rest Framework 参考までに、明らかに私の問題を解決していません。
ご協力いただければ幸いです。 TNX、 あなたRecipe
モデルにNitzan