Issue with djongo EmbeddedFields

351 views Asked by At

I'm using Djongo with Django and MongoDB, however I am stuck at the following issue when trying to implement an embedded field

ValueError: Value: [OrderedDict([('userID', 1), ('username', 'o'), ('admin', False)])] must be an instance of <class 'dict'>

These are the models concerned:

from djongo import models

class groupMembership(models.Model):
    membershipID = models.ObjectIdField()
    userID = models.IntegerField()
    username = models.CharField(max_length=50)
    admin = models.BooleanField(default=False)
    

class group(models.Model):
    groupID = models.ObjectIdField()
    title = models.CharField(max_length=100)
    createdDate = models.DateField()
    members = models.EmbeddedField(model_container = groupMembership, null = True)

Here are the serializers I am using:

class groupMembershipSerializer(serializers.ModelSerializer):
    class Meta:
        model=groupMembership
        fields=('membershipID', 'userID', 'username', 'admin')

class groupSerializer(serializers.ModelSerializer):
    members = groupMembershipSerializer(many = True)
    class Meta:
        model=group 
        fields=('groupID','title','createdDate','members')

Error is thrown when I try to send in the following POST request:

{
"title" : "l",
"createdDate" : "2021-07-07",
    "members" : 
        [{
        "userID" : "1",
        "username": "o",
        "admin" : "False"
        }
        ]

}

Any help is appreciated!

1

There are 1 answers

0
Lingster On

The error message suggests you are trying to POST with a list object instead of dict, can you try:

{
    "title" : "l",
    "createdDate" : "2021-07-07",
        "members" : 
        {
            "userID" : "1",
            "username": "o",
            "admin" : "False"
        }
}