Django创建后中间模型

Django创建后中间模型,django,django-rest-framework,Django,Django Rest Framework,我使用的是DRM v3.9.4,具有以下型号: class Book(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) ... users = models.ManyToManyField("User", related_name="books", through="BookUser") class BookUser(models.Model):

我使用的是DRM v3.9.4,具有以下型号:

class Book(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
   ...
   users = models.ManyToManyField("User", related_name="books", through="BookUser")

class BookUser(models.Model):
   user = models.ForeignKey("User", on_delete=models.CASCADE)
   book = models.ForeignKey("Book", on_delete=models.CASCADE)
   permission = models.CharField(...)

class User(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
   ...
使用以下序列化程序:

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

class BookUserSerializer(ModelSerializer):
    class Meta:
        model = BookUser
        fields = ('user', 'permission')

class BookSerializer(ModelSerializer):
    users = BookUserSerializer(source='bookuser_set', many=True)

    class Meta:
        model = Book
        fields = ( "id", "users", ... )
        extra_kwargs = {
            "users": {"allow_empty": True},
        }
读书时,一切都很好:

{
   id: ...,
   users: [
       {
           user: 'some-uuid',
           permission: 'read-only'
       },
       ...
   ]
}
但当尝试使用相同的有效负载进行POST时:

{
   id: ...,
   users: [
       {
           user: 'some-uuid',
           permission: 'read-only'
       },
       ...
   ]
}
我得到一个错误:

KeyError: 'users'
查看api指南() 似乎默认情况下嵌套序列化程序是只读的, 但我不能让它工作

顺便说一句,重要的是:所有用户都已经(并且应该)存在,所以我希望这次POST调用在中间
BookUser
表中添加一条记录,当然也包括
Book
本身,但不是实际添加新的用户记录


任何帮助、指导或帮助都将不胜感激,因为如何使用
drf writable nested
软件包使这件事正常运行,您可以实现:

from drf_writable_nested import WritableNestedModelSerializer

class BookSerializer(WritableNestedModelSerializer):
    users = BookUserSerializer(source='bookuser_set', many=True)

    class Meta:
       model = Book
       fields = ( "id", "users", ... )
       extra_kwargs = {
          "users": {"allow_empty": True},
       }