"Получена KeyError при попытке получить значение для поля devUserId на сериализаторе AssetSerializer. Оригинальный текст исключения был: 'devUserId'
models.py
class User(models.Model):
googleId = models.CharField(max_length=512, primary_key=True, default='')
imageURL = models.CharField(max_length=512, null=True)
userName = models.CharField(max_length=512, null=True)
firstName = models.CharField(max_length=512, null=True)
lastName = models.CharField(max_length=512, null=True)
#phoneNumberRegex = RegexValidator(regex=r"^+?1?\d{8,15}$")
phoneNumber = models.CharField(max_length=512, null=True)
email1 = models.CharField(max_length=512, blank=False)
email2 = models.CharField(max_length=512, blank=True)
bio = models.TextField(blank=True)
planId = models.ForeignKey('primal_user.Plans',
on_delete=models.CASCADE,
default="Free")
password = models.CharField(max_length=512, null=True)
accountCreationDate = models.DateTimeField(auto_now_add=True)
coins = models.IntegerField(default=2)
assetsDownloaded = models.IntegerField(default=0)
assetsPurchased = models.IntegerField(default=0)
class Asset(models.Model):
assetId = models.CharField(max_length=20, primary_key=True)
devUserId = models.ForeignKey(User, on_delete=models.CASCADE)
keywordId = models.ForeignKey(Tags, on_delete=models.CASCADE)
assetName = models.CharField(max_length=50, null=False)
description = models.TextField(blank=True)
features = models.TextField(blank=True)
uploadedDate = models.DateField(auto_now_add=True)
typeId = models.BooleanField(default=True)
paidStatus = models.BooleanField(default=False)
price = models.IntegerField(null=True)
size = models.FloatField(null=False)
downloadCount = models.BigIntegerField(null=True)
version = models.CharField(max_length=10)
serializer.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
class AssetSerializer(serializers.ModelSerializer):
class Meta:
model = Asset
fields = '__all__'
views.py
class UserAsset(APIView):
def get(self,request,devUserId):
try:
user = Asset.objects.filter(devUserId=devUserId).values()
serializer = AssetSerializer(user, many= True)
return Response(serializer.data)
except Asset.DoesNotExist:
raise Http404
Я новичок в Django, поэтому не могу понять, в чем проблема. Я пробовал искать решения на похожие вопросы, но не смог решить проблему. Я получал ошибку атрибута, затем она была решена после того, как я ввел many=True в AssetSerializer, но теперь я застрял с этой KeyError. Пытаясь разобраться в ошибке, я заметил, что эта ошибка возникает при выполнении serializer.data. Спасибо за любую возможную помощь
В вашем коде необходимо лишь небольшое изменение в синтаксисе.
Вместо:
user = Asset.objects.filter(devUserId=devUserId).values()
Запись:
user = Asset.objects.filter(devUserId=devUserId)
И это должно решить проблему!
попробуйте с
user = Asset.objects.values('fieldnamehere').filter(devUserId=devUserId)