我是python和jango rest的新手。但是我很困惑。在Django Rest框架中更新多对多关系的最佳方法是什么。我阅读了文档
http://www.django-rest-framework.org/api-guide/relations/#manytomanyfields-
with-a-through-model
默认情况下,设置了以指定的贯通模型为目标的ManyToManyField的关系字段只读。
如果您使用直通模型明确指定指向ManyToManyField的关系字段,请确保将read_only设置为True。
所以如果我有一个代码
class Master(models.Model):
# other fields
skills = models.ManyToManyField(Skill)
class MasterSerializer(serializers.ModelSerializer):
skills = SkillSerializer(many=True, read_only=False)
这会将技能作为对象列表返回。而且我没有办法更新它们。据我了解,在M2M方面,Django倾向于使用对象而不是对象ID。如果我使用yii或rails,我将使用“直通”模型。我想获取skill_ids字段。我可以读写。我可以执行写入操作
class MasterSerializer(serializers.ModelSerializer):
skill_ids = serializers.ListField(write_only=True)
def update(self, instance, validated_data):
# ...
validated_data['skill_ids'] = filter(None, validated_data['skill_ids'])
for skill_id in validated_data['skill_ids']:
skill = Skill.objects.get(pk=skill_id)
instance.skills.add(skill)
return instance
但是我不能让它在字段中返回skill_ids。并进行读写操作。
需要注意的几件事。
首先,在示例中您没有显式的穿透表。因此,您可以跳过该部分。
其次,您正在尝试使用嵌套的序列化器,这些序列化器要比您要实现的复杂得多。
您可以使用PrimaryKeyRelatedField来简单地读取/写入相关的ID:
class MasterSerializer(serializers.ModelSerializer):
skills_ids = serializers.PrimaryKeyRelatedField(many=True, read_only=False, queryset=Skill.objects.all(), source='skills')
哪个应该能够读/写:
{id: 123, first_name: "John", "skill_ids": [1, 2, 3]}
请注意,从JSON的“ skill_ids”到模型的“技能”的映射是通过使用可选参数源完成的
问题内容: 有关JSF的另一个问题,尤其是Primefaces。 同时通过id的元素的ajax更新具有以下问题。如果页面上的元素一一对应,则该ajax更新执行正常: ID为“ count”的元素排在第一位,ID为“ subtotal”的元素排在第二位。如果页面上的元素并非严格一一对应,则标识为“小计”的第二个元素不会更新: 这是正常行为还是我错过了一些参数? 问题答案: 如果待更新的组件是不一样的
我有一个与Zephyr相关的查询,我如何通过rest API使用测试用例ID来更新测试用例的执行状态以通过/失败/WIP 我已经参考了下面链接中的文章https://support.getzephyr.com/hc/en-us/articles/205042055-Sample-REST-API-Update-execution-status-of-a-testcase-JAVA- 在本例中,他们
问题内容: 是否可以使用Tire更新elasticsearch设置?我有这个curl命令,我想自动运行。 该值可通过轮胎获得,但我不确定如何应用。 问题答案: 可能,但是很丑:) 在将来的版本中会变得更好…
问题内容: 我有2张table: 现在我需要一个函数或光标或任何会得到两个输入的东西,即要复制的文件夹和要复制的目标文件夹,该函数应将文件夹及其子文件夹复制到具有新ID和父ID的同一表中,如下所示当复制并插入文件夹时,文件表中的文件也将被插入,请帮助我获得以下结果。 如果我将folder5对应到folder3,我的输出应该是这样的: 当复制和插入文件夹时,文件表也将被更新,如下所示: 问题答案:
有几家应该是被鸽了不少,捞我面试了,秉承有就面的玩玩的态度,去面了 BOSS直聘 数据分析师 一面 无消息 自我介绍后面试官似乎对我科研项目很感兴趣,具体讨论了下项目中涉及的因果领域方法,和面试官讨论了一下干预和混杂的处理方法,以及一些结合了因果推断的算法,例如双重机器学习之类,不过我学习不深,可能答得不大好 海康威视 大数据算法工程师 电话面(上海旅游呢,就打电话来了,蹲在交大门口吹风面的😂)
问题内容: 我正在使用 Elasticsearch 2.3 和 官方php驱动程序 。该 updateByQuery 是给我的烦恼在PHP中使用。对于如何使用它的一些帮助将不胜感激。 基本上我想更新几个与某个查询匹配的 文档 字段(名称,价格) 谢谢。 问题答案: 因此,借助CURL api的工作原理,我设法提出了一种方法。 首先,您需要编辑您的脚本以允许脚本。最后添加以下几行。 之后,您可以开始