Django AttributeError 对象没有属性 'upper'
Django AttributeError object has no attribute 'upper'
我正在为图像标签应用实现 API。
我已经为标记定制了一个 create() 方法。标记包含一个标记,它是一个包含名称和语言的对象。为了使标签更容易相互比较,我必须以大写或小写形式保存所有标签。
serializers.py
def create(self, validated_data):
"""Create and return a new tagging"""
user = None
request = self.context.get("request")
if request and hasattr(request, "user"):
user = request.user
score = 0
tag_data = validated_data.pop('tag', None)
if tag_data:
tag = Tag.objects.get_or_create(**tag_data)[0]
validated_data['tag'] = tag
tagging = Tagging(
user=user,
gameround=validated_data.get("gameround"),
resource=validated_data.get("resource"),
tag=validated_data.get("tag"),
created=datetime.now(),
score=score,
origin=""
)
tagging.save()
return tagging
这两个我都试过了
tag=validated_data.get("tag").upper()
还有这个:
tag=validated_data.get("tag").lower()
我得到一个 AttributeError 'Tag' object has no attribute 'upper' or 'Tag' object has no attribute 'lower'.
我想在标记对象中使用此标记:
{
"gameround_id": 65,
"resource_id": 11601,
"tag": {
"name": "TagToTestNow",
"language": "de"
}
}
保存为“TAGTOTESTNOW”或“tagtotestnow”之类的内容,以便更轻松地进行标签比较。
我怎样才能做到这一点?
因为你已经创建了标签,所以它不再是字典了。您可以直接在 Tagging
对象创建中执行 tag=tag
。
如果您希望所有标签都具有相同的大小写,则必须首先稍微修改您创建标签的方式,如下所示:
tag = Tag.objects.get_or_create(
language=tag_data['language'],
name=tag_data['name'].upper()
)[0]
我正在为图像标签应用实现 API。 我已经为标记定制了一个 create() 方法。标记包含一个标记,它是一个包含名称和语言的对象。为了使标签更容易相互比较,我必须以大写或小写形式保存所有标签。
serializers.py
def create(self, validated_data):
"""Create and return a new tagging"""
user = None
request = self.context.get("request")
if request and hasattr(request, "user"):
user = request.user
score = 0
tag_data = validated_data.pop('tag', None)
if tag_data:
tag = Tag.objects.get_or_create(**tag_data)[0]
validated_data['tag'] = tag
tagging = Tagging(
user=user,
gameround=validated_data.get("gameround"),
resource=validated_data.get("resource"),
tag=validated_data.get("tag"),
created=datetime.now(),
score=score,
origin=""
)
tagging.save()
return tagging
这两个我都试过了
tag=validated_data.get("tag").upper()
还有这个:
tag=validated_data.get("tag").lower()
我得到一个 AttributeError 'Tag' object has no attribute 'upper' or 'Tag' object has no attribute 'lower'.
我想在标记对象中使用此标记:
{
"gameround_id": 65,
"resource_id": 11601,
"tag": {
"name": "TagToTestNow",
"language": "de"
}
}
保存为“TAGTOTESTNOW”或“tagtotestnow”之类的内容,以便更轻松地进行标签比较。
我怎样才能做到这一点?
因为你已经创建了标签,所以它不再是字典了。您可以直接在 Tagging
对象创建中执行 tag=tag
。
如果您希望所有标签都具有相同的大小写,则必须首先稍微修改您创建标签的方式,如下所示:
tag = Tag.objects.get_or_create(
language=tag_data['language'],
name=tag_data['name'].upper()
)[0]