- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 Recipe 模型,它包含一个 IngredientType 对象的 M2M 字段。这个字段,又名 ingredient_list,通过一个将额外数据添加到我的 IngredientType 的 Ingredient 对象使用臭名昭著的“through”模型。这些是我的类(class):
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)
也就是说,更改 Serializer,它可以工作,但没有获取成分数据。我用过这个链接: Include intermediary (through model) in responses in Django Rest Framework作为引用,但显然它没有解决我的问题。
任何帮助,将不胜感激。谢谢,尼赞
最佳答案
在您的 Recipe
上模型,为 ingredient_list
字段你有一个ManyToManyField
指向 IngredientType
.
在您的 RecipeSerializer
上ingredient_list
字段未使用 IngredientTypeSerializer
而是 IngredientSerializer
.
这是错误。 (它解释了错误消息——source
处的实际模型没有序列化程序正在查找的属性。)
除此之外,您的命名方案非常困惑。 “Recipe”很好,但你所说的“IngredientType”可能应该只是“Ingredient”,然后你应该为直通表找到一个不同的名称。 (也许是“RecipeIngredientDetails”)
希望对您有所帮助。
关于python - 如何使用 django rest 框架序列化一个带有直通模型的 ManyToManyField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19180242/
我有一个模型,我想在其中为 manytomanyfield 的计数创建排名。只有它需要一个整数字段而不是一个 manytomany 字段。我的投票有问题__lt。 最好的做法是创建一个计算选票的 vo
假设我有两个 Django 应用程序: competitions - 将处理比赛数据 entries - 将处理与让参赛者参加比赛相关的功能 在比赛应用程序中,我有一个代表比赛部分的模型: class
在我的项目中,我有 2 个模型,它们具有相互指向的 ManyToMany 字段。在这种情况下,我有选举和候选人。这个想法是一个选举可以有多个候选人,一个候选人也可以是多个选举的一部分(一个“候选人”只
我正在使用 Django 的 ManyToManyField,当我尝试向其中添加数据时,出现以下错误: Traceback (most recent call last): File "", li
在 django 模型中我需要过滤 ManyToManyField有条件的 STATUS_CHOICES=( ('ACTIVE', 'Active'), ('INACTIVE', 'Inact
我读了documentation about many-to-many relationships和 examples .我找不到关于在何处放置 ManyToManyField 的提示。就我而言,我有
我需要创建一个有一些选项的 manytomany 字段,然后在每个选项旁边有一个额外的字段 我的模型: class Subject(models.Model): name = models.C
我有两个模型,产品和类别以及产品中的多对多字段。 类别在 ProductCreate View 中显示为键。 我需要为类别自定义小部件和字段。 我检查了 Django 源字段和小部件,但没有看到 Ma
我正在尝试在 Django 中使用 ModelForms 将内容添加到我的数据库中,其中包括一个 ManyToManyField。这是我的模型的相关部分: class Category(models.
我想在创建实例时更新字段,我尝试过 signals但对 ManyToManyField 来说似乎很复杂 class MobileCustomer(models.Model): customer
我正在尝试创建一个表示图形节点的模型。 class Node(models.model): ins = models.ManyToManyField("self", null=True, bl
我正在尝试创建一个表示图形节点的模型。 class Node(models.model): ins = models.ManyToManyField("self", null=True, bl
我有带有 M2M 字段的用户配置文件模型 class Account(models.Model): ... friends = models.ManyToManyField('self
我知道我不可能是第一个问这个问题的人,但我找不到答案,所以请不要吃掉我。 如果我有一个模型,其字段是ManyToManyField;我知道我可以在保存之前获取所选对象,但如果所选对象已更改,则这没有帮
我有一个遗留数据库,其中包含文档和作者的表格。第三个表定义了文档和作者之间的有序多对多关系,使用文档和作者的外键以及一个整数来指定给定文档的作者顺序。 使用 Django 1.1.1(或 SVN),有
我有一个这样的结构: 1. 作者 2. 预订 3.作者类型 4. 作者图书类型 一本书可以有多个作者,并且它可以在书中具有以下功能,例如:“作者”,“共同作者”,“部分”,“帮助者”等: class
以下是我的例子: models.py: class Example(models.Model): title = models.CharField(...) description =
Django ManyToManyField 在 HTML 中呈现如下内容: Question 1, Answer 1 Question 1, Answer 2 Que
如标题所述,manytomanyfield 和 through 如何出现在管理站点中? class SchoolClass(models.Model): id = models.AutoFie
我的 Django 项目中有这些模型: class Area(models.Model): name = models.CharField(max_length=100, primary_ke
我是一名优秀的程序员,十分优秀!