title: Django EmbeddedModelField saying "This field may not be blank" when doing PUT request despite field having "blank=True"
body: <p>I'm creating a Django application with django-rest-framework and using djongo to connect to MongoDB. I have nested models as such:</p>
  
  <pre><code>class Group(models.Model):
      users = models.ArrayModelField(
          model_container=User
      )
  
  class User(models.Model):
      number = models.IntegerField(
          default=None,
          null=True
      )
  
      song = models.EmbeddedModelField(
          model_container=Song,
          null=True,
          blank=True
      )
  
      class Meta:
          abstract = True
  
  class Song(models.Model):
      mp3_file = models.URLField(
          default=None,
          blank=True,
          null=True
      )
  
      comments = models.CharField(
          max_length=250,
          default='',
          blank=True
      )
  
      class Meta:
          abstract = True
  </code></pre>
  
  <p>When a Group is created, the Users and the Songs are created without any problems. For example, when created, the Group may look like:</p>
  
  <pre><code>{
      "name": "Sample",
      "users: [
          {
              "number": null,
              "song": {
                  "mp3_file": null,
                  "comments": ""
              }
          }
      ]
  }
  </code></pre>
  
  <p>This all works fine. However, if I try to do a PUT request and don't change the value of "number", "mp3_file", or "comments", I will get the following error message:</p>
  
  <pre><code>"user": [
      {
          "number": [
              "This field may not be null."
          ],
          "song": {
              "mp3_file": [
                  "This field may not be null."
              ],
              "comments": [
                  "This field may not be blank."
              ]
          }
      }
  ]
  </code></pre>
  
  <p>Any thoughts on how to fix this error? I am just using a generic RetrieveUpdateDestroyAPIView as the view for this endpoint.</p>
  
  <p>edit: I have also tried recreating all migrations as well as dropping the table and recreating it, and neither of those approaches helped.</p>
  
  <p>edit:
  Here is the view:</p>
  
  <pre><code>class GroupDetail(generics.RetrieveUpdateDestroyAPIView):
      serializer_class = GroupSerializer
      queryset = Group.objects.all()
      lookup_field = 'group_name'
      lookup_url_kwarg = 'group_name'
  </code></pre>
  
  <p>And the serializers:</p>
  
  <pre><code>class GroupSerializer(serializers.HyperlinkedModelSerializer):
      users = UserSerializer(many=True)
  
      def update(self, instance, validated_data):
          if validated_data.get('group_name', None) is not None:
              instance.__setattr__('group_name', validated_data.get('group_name'))
  
          instance.save()
  
          return instance
  
      class Meta:
          model = Group
          fields = (
              'group_name',
              'users'
          )
  
  
  class UserSerializer(serializers.Serializer):
      number = serializers.IntegerField()
      song = SongSerializer()
  
  
  class SongSerializer(serializers.Serializer):
      mp3_file = serializers.URLField()
      comments = serializers.CharField(
          max_length=250
      )
  </code></pre>
  
  <p>But part of the issue is that the serializers are never even being reached since the data is validating incorrectly.</p>