【发布时间】:2016-01-26 15:22:42
【问题描述】:
我是 Django 新手。我做了两个这样的模型:
class A(models.Model):
title = models.CharField(max_length=255, null=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now_add=False, null=True)
b_assigned = models.ManyToManyField(B, related_name='b_assigned')
class Meta:
db_table = 'a_table'
class B(models.Model):
name = models.CharField(max_length=255, null=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now_add=False, null=True)
class Meta:
db_table = 'b_table'
各个类的序列化器是:
class ASerializer(serializers.ModelSerializer):
b_assigned = BSerializer(many=True, required=True)
class Meta:
model = A
fields = ('id', 'title', 'b_assigned')
read_only_fields = ('id',)
class BSerializer(serializers.ModelSerializer):
class Meta:
model = B
fields = ('id', 'name')
read_only_fields = ('id',)
我在数据库中已经有了几个B 的对象。
现在要创建A 的对象,我必须提供B 的对象数组。
如何使用 Django REST Framework 实现这一目标。
我知道,我必须在 ASerializer 中覆盖 create 和 update。但是如何使用他们的 ID 将B 的数组添加到A。我不想在创建A 时创建B 的任何新实例。想要实现这一点,仅使用 REST 框架。
澄清:我发布 B 的 ID 用于创建/更新 A
【问题讨论】:
-
如何获取数据库中 B 的 ID,然后在 create 方法中将它们添加到 A 的 b_assigned 中?您不需要创建 B 的新实例。
-
这是一个这样做的例子,但它会创建新实例:django-rest-framework.org/api-guide/serializers/…
标签: python django django-rest-framework django-serializer