【发布时间】:2020-09-27 18:23:38
【问题描述】:
我有一个 POST 方法,它将用于检索 JSON 对象,然后将用于检索名字、姓氏和用户名——尽管我不知道如何获取这些字段(即用户名)在我序列化之后。最好的方法是什么?
views.py
@api_view(['POST'])
def createUser(request):
# Making a Connection w/ MongoClient
client = MongoClient('mongodb+srv://test_user:0FP33TLJVWrjl8Vy@cluster0.5sacp.mongodb.net/sample_clubs?retryWrites=true&w=majority')
# Getting the Database
db = client['sample_clubs']
# Getting the Collection/Table
collection = db['users']
serializer = MyUserSerializer(data=request.data)
# Gives bug if next 2 lines aren't here
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
序列化器.py
class MyUserSerializer(serializers.ModelSerializer):
def get_first_name(self, obj):
# obj is model instance
return obj.first_name
def get_last_name(self, obj):
# obj is model instance
return obj.last_name
def get_user_name(self, obj):
# obj is model instance
return obj.user_name
class Meta:
model = MyUser
fields = ['first_name', 'last_name', 'username']
# fields = '__all__'
models.py
class MyUser(models.Model):
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
username = models.CharField(max_length=200)
def __str__(self):
return self.username
【问题讨论】:
-
当前设置有什么问题?
-
您想在调用
serializer.save()后的用户名查看已保存的用户名?还是想要原始的序列化数据? -
目前我无法弄清楚将什么传递给 get 函数的 obj 参数,或者它们是否有效。我在另一个 StackOverflow 问题中找到了实现的想法,但是我无法找到它的文档,并且陷入了如何继续调用 get 函数和获取本地 Python 字符串进行解析的问题。
-
@NavidZarepak 之后我想将用户名作为字符串获取(我无法删除这两行,否则会出错)
标签: django django-rest-framework