I have a question about querying embedded and array fields in django.
This is my models.py file:
from djongo import models
class detalji_igrica(models.Model):
pegi_rejting = models.IntegerField()
izdavac = models.CharField(max_length=64)
zanr = models.CharField(max_length=32)
datum_izlaska = models.CharField(max_length=32)
class Meta:
abstract = True
class komentari(models.Model):
id_korisnika = models.IntegerField()
komentar_naslov = models.CharField(max_length=64)
komentar = models.TextField()
datum_komentara = models.CharField(max_length=32)
rejting_korisnika = models.FloatField()
class Meta:
abstract = True
class Igrica(models.Model):
sifra_artikla = models.IntegerField()
naziv = models.CharField(max_length=32)
cena = models.FloatField()
konzola = models.CharField(max_length=32)
slika = models.CharField(max_length=64)
opis = models.TextField()
rejting = models.FloatField()
vrsta = models.CharField(max_length=32)
detalji_igrica = models.EmbeddedField(
model_container = detalji_igrica
)
komentari = models.ArrayField(
model_container = komentari
)
Here is my views.py file:
@api_view(['GET'])
def najjeftinije_prvo(request):
igrice = Igrica.objects.get(detalji_igrica__pegi_rejting = 18)
if request.method == 'GET':
igrica_serializer = IgricaSerializer(igrice, many=True)
return JsonResponse(igrica_serializer.data, safe=False)
And here is serializers.py:
class IgricaSerializer(serializers.ModelSerializer):
class Meta:
model = Igrica
fields = (
'id',
'sifra_artikla',
'naziv',
'cena',
'konzola',
'slika',
'opis',
'rejting',
'vrsta',
'detalji_igrica',
'komentari'
)
As you can see it has one embedded and one array field imported from djongo models. Now when I want to search for all games for example that have in detalji_igrica a field pegi_rejting = 18, this is the message I get:
FieldError at /api/igrice/najjeftinije Unsupported lookup 'pegi_rejting' for EmbeddedField or join on the field not permitted.
Similar message for Array field:
FieldError at /api/igrice/najjeftinije Unsupported lookup 'id_korisnika' for ArrayField or join on the field not permitted.
I would really appreciate the help!
I can't answer directly for your question, because I can't find any answers about issues from my personal project. Anyway, You need to use right Python naming style for Classes.
Your model field name is similar with you model container name.
Change
class komentari(models.Model)
toclass Komentari(models.Model)
, andto