如何在Django中序列化单个对象的字段(没有pk和model)

2024-06-26 18:05:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在Django中,我有这个模型(它继承自AbstractBaseUser):

class User(AbstractBaseUser):
    username = models.CharField(max_length=20, unique=True)
    realname = models.CharField(max_length=10)
    grade = models.CharField(max_length=10)
    studentNo = models.CharField(max_length=10)
    email = models.EmailField()
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)

我希望序列化单个用户对象以:

^{pr2}$

是否有要序列化的实用程序?在


我找到了the document表格django。跟随cocument,它只能序列化一个列表,并且必须使用model和{}。就像这样:

[
    {
        "fields": {
            "email": "admin@admin.com", 
            "is_active": true, 
            "studentNo": "lu", 
            "username": "admin", 
            "realname": "lu", 
            "grade": "lu"
        }, 
        "pk": 1, 
        "model": "account.user"
    }
]

我也尝试了内建模块^{},但我必须获取每个字段的键和值,保存到list,然后将其序列化。它看起来不雅观。在


Tags: true序列化adminismodelsemailusernamelength
3条回答

我有另一种方法

import json
from models import User

UserList = [ {"studentNo": user.studentNo, "realname": user.realname, "email": user.email, "grade": user.grade,
    "username": user.username, "is_active": user.is_active } for user in User.objects.all()]

f = open('jsonfile.txt','w')
json.dump(UserList,f,indent=4) # elegant output
f.close()

您可以像这样创建自定义Serializer

from django.core.serializers.json import Serializer, DjangoJSONEncoder
from django.utils import simplejson

class NewSerializer(Serializer):
    def end_serialization(self):
        cleaned_objects = []

        for obj in self.objects:
            del obj['pk']
            del obj['model'] 
            cleaned_objects.append(obj)

        simplejson.dump(cleaned_objects, self.stream, cls=DjangoJSONEncoder, **self.options)
from django.core.serializers.json import Serializer
class CustomSerializer(Serializer):
    def get_dump_object(self, obj):
        return self._current

我在新的Django版本中使用这个

相关问题 更多 >