【发布时间】:2021-03-29 22:14:19
【问题描述】:
我有一个关于在 django 中查询嵌入和数组字段的问题。
这是我的 models.py 文件:
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
)
这是我的views.py文件:
@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)
这里是 serializers.py:
class IgricaSerializer(serializers.ModelSerializer):
class Meta:
model = Igrica
fields = (
'id',
'sifra_artikla',
'naziv',
'cena',
'konzola',
'slika',
'opis',
'rejting',
'vrsta',
'detalji_igrica',
'komentari'
)
如您所见,它有一个嵌入的和一个从 djongo 模型导入的数组字段。 现在,当我想搜索所有游戏时,例如在 detalji_igrica 字段 pegi_rejting = 18 的游戏,这是我得到的消息:
/api/igrice/najjeftinije 处的字段错误 不支持查找 EmbeddedField 的“pegi_rejting”或不允许加入该字段。
Array 字段的类似消息:
/api/igrice/najjeftinije 处的字段错误 ArrayField 的不支持查找“id_korisnika”或不允许加入该字段。
非常感谢您的帮助!
【问题讨论】: