I'm running Django rest api with django 3.2 and docker on GCP Ubuntu 22.04. I'm getting an error when I run the web server container :
django.core.serializers.base.DeserializationError: Problem installing fixture '/opt/my-api/mynetwork_common/fixtures/emoji-groups.json'
The detailed trace is here :
my-api-webserver | Traceback (most recent call last):
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/django/core/serializers/json.py", line 69, in Deserializer
my-api-webserver | objects = json.loads(stream_or_string)
my-api-webserver | File "/usr/local/lib/python3.8/json/__init__.py", line 357, in loads
my-api-webserver | return _default_decoder.decode(s)
my-api-webserver | File "/usr/local/lib/python3.8/json/decoder.py", line 337, in decode
my-api-webserver | obj, end = self.raw_decode(s, idx=_w(s, 0).end())
my-api-webserver | File "/usr/local/lib/python3.8/json/decoder.py", line 355, in raw_decode
my-api-webserver | raise JSONDecodeError("Expecting value", s, err.value) from None
my-api-webserver | json.decoder.JSONDecodeError: Expecting value: line 11 column 28 (char 266)
my-api-webserver |
my-api-webserver | The above exception was the direct cause of the following exception:
my-api-webserver |
my-api-webserver | Traceback (most recent call last):
my-api-webserver | File "manage.py", line 25, in <module>
my-api-webserver | execute_from_command_line(sys.argv)
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
my-api-webserver | utility.execute()
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 413, in execute
my-api-webserver | self.fetch_command(subcommand).run_from_argv(self.argv)
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 354, in run_from_argv
my-api-webserver | self.execute(*args, **cmd_options)
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 398, in execute
my-api-webserver | output = self.handle(*args, **options)
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/modeltranslation/management/commands/loaddata.py", line 49, in handle
my-api-webserver | return super(Command, self).handle(*fixture_labels, **options)
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/loaddata.py", line 78, in handle
my-api-webserver | self.loaddata(fixture_labels)
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/loaddata.py", line 123, in loaddata
my-api-webserver | self.load_label(fixture_label)
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/loaddata.py", line 181, in load_label
my-api-webserver | for obj in objects:
my-api-webserver | File "/usr/local/lib/python3.8/site-packages/django/core/serializers/json.py", line 74, in Deserializer
my-api-webserver | raise DeserializationError() from exc
my-api-webserver | django.core.serializers.base.DeserializationError: Problem installing fixture '/opt/my-api/mynetwork_common/fixtures/emoji-groups.json':
The file which is throwing the error is :
[
{
"model": "mynetwork_common.EmojiGroup",
"pk": 1,
"fields": {
"order": 1,
"keyword": "primary",
"keyword_en": "Primary",
"color": "#FFFFFF",
"created": "2018-10-22 12:23:30.382913+00:00",
"is_reaction_group": True,
"keyword_es": "",
"keyword_de": "Standard",
"keyword_sv": "Primära",
"keyword_fr": "Principales",
"keyword_it": "Principale",
"keyword_tr": "Başlıca",
"keyword_pt_br": "Básico"
}
},
{
"model": "mynetwork_common.EmojiGroup",
"pk": 2,
"fields": {
"order": 2,
"keyword": "obgold",
"keyword_en": "Premium",
"color": "#FFFFFF",
"created": "2018-10-22 12:23:30.382913+00:00",
"is_reaction_group": True,
"keyword_es": "",
"keyword_de": "Premium",
"keyword_sv": "Premium",
"keyword_fr": "Prémium",
"keyword_it": "Premium",
"keyword_tr": "Premium",
"keyword_pt_br": "Premium"
}
},
{
"model": "mynetwork_common.EmojiGroup",
"pk": 3,
"fields": {
"order": 2,
"keyword": "objects",
"keyword_en": "Objects",
"color": "#FFFFFF",
"created": "2018-10-22 12:23:30.382913+00:00",
"is_reaction_group": false,
"keyword_es": "",
"keyword_de": "Objekte",
"keyword_sv": "Objekt",
"keyword_fr": "Objets",
"keyword_it": "Tipi",
"keyword_tr": "Nesneler",
"keyword_pt_br": "Objetos"
}
}
]
I didn't face issues earlier with this file. The problem has suddenly come to the front. Help appreciated.
EDIT : As suggested by Alombaros as a solution , I did change the Boolean value From 'True' ---> 'true'.
However, the above error has disappeared but a new error from the same file has appeared :
KeyError: 'keyword_sv
django.core.exceptions.FieldDoesNotExist: EmojiGroup has no field named 'keyword_sv'
followed by the same error :
django.core.serializers.base.DeserializationError: Problem installing fixture '/opt/my-api/mynetwork_common/fixtures/emoji-groups.json'
Here is models.py
class EmojiGroup(models.Model):
keyword = models.CharField(_('keyword'), max_length=32, blank=False, null=False)
color = models.CharField(_('color'), max_length=COLOR_ATTR_MAX_LENGTH, blank=False, null=False,
validators=[hex_color_validator], unique=False)
order = models.IntegerField(unique=False, default=100)
created = models.DateTimeField(editable=False)
is_reaction_group = models.BooleanField(_('is reaction group'), default=False)
def __str__(self):
return 'EmojiGroup: ' + self.keyword
def save(self, *args, **kwargs):
''' On save, update timestamps '''
if not self.id:
self.created = timezone.now()
return super(EmojiGroup, self).save(*args, **kwargs)
def has_emoji_with_id(self, emoji_id):
return self.emojis.filter(pk=emoji_id).exists()
As expressed in the traceback, the parser did not understand the value line 11 column 28.
It occurres because "True" is not a JSON boolean, you should use "true" instead (You got the same mistake a second time line 30)
I'm not sure what you're trying to do with the different languages but it seems to me that every "keyword_XX" should be removed from your JSON