创建许多对象。Django REST框架

创建许多对象。Django REST框架,django,python-2.7,rest,django-rest-framework,Django,Python 2.7,Rest,Django Rest Framework,我希望创建相同的对象,它们只会与ForeignKeyField不同 class MyModel(models.Model): text = models.CharField(max_length=255) author = models.ForeignKey(User, related_name='author') recipient = models.ForeignKey(User, related_name='recipient') 我创建了序列化程序: class

我希望创建相同的对象,它们只会与ForeignKeyField不同

class MyModel(models.Model):
    text = models.CharField(max_length=255)
    author = models.ForeignKey(User, related_name='author')
    recipient = models.ForeignKey(User, related_name='recipient')
我创建了序列化程序:

class UserSerializer(serialiser.ModelSerializer):
      class Meta():
          model = User
          fields = ('id',)

class MyModelSerializer(serializers.ModelSerializer):
     recipients = UserSerializer(many=True)
     class Meta():
         fields = (text,)
我得到的json是这样的:
{“text”:“text”,“recipients”:[{“id”:3},{“id”:1},{“id”:2}]}


我希望为每个用户(通过“id”)创建新的对象MyModel。如何执行此操作?

您需要重写
MyModelSerializer的
方法的
.create()
方法

最后应该是这样的:

def create(self, validated_data):

    if 'recipients' in validated_data:
        recipients_data = validated_data.pop('recipients')
    else:
        recipients_data = []

    for recipient_data in recipients_data:
        created_my_model = MyModel.objects.create(recipient=User.objects.get(id=recipient_data['id']),
                                                  text=validated_data['text'])

    return something # here you need to decide what to return

不过,我不会在循环中请求用户的对象。但是你看到了这个想法。

这很好,但是我不能返回MyModel对象的列表,而且收件人的顺序是空的。至于返回什么,这取决于你需要什么。默认情况下,我将返回一个与您收到的对象类似的对象(但可能包含序列化用户,而不是ID列表)。如果您在返回中不需要任何创建的数据,您可以返回一个空的dict。响应代码应该是201,这将表明创建成功。