【发布时间】:2020-03-12 10:01:27
【问题描述】:
serialize() 方法包含在 django Tools_booked 类中,但在尝试访问该方法时显示错误。
'QuerySet' object has no attribute 'serialize'
models.py
from django.core.serializers import serialize
class UpdateQuerySet(models.QuerySet):
def serialize(self):
print("*****Entered the serizlize inside the UpdateQuerySet models **********")
qs = self
return serialize('json', qs, fields=('auto_increment_id','user','component','booked'))
class UpdateManager(models.Manager):
def get_queryset(self):
return UpdateQuerySet(self.model, using=self._db)
class Tools_booked(models.Model):
auto_increment_id = models.AutoField(primary_key=True)
user=models.ForeignKey(Profile, on_delete=models.CASCADE)
component = models.CharField(max_length=30, blank=True)
booked = models.DateTimeField(auto_now_add=True,blank=True)
objects = UpdateManager()
def __str__(self):
return self.component
def serialize(self):
json_data = serialize("json", [self], fields=['auto_increment_id','user','component','booked'])
stuct = json.loads(json_data)
print(struct)
data = json.dump(stuct[0]['fields'])
return data
views.py
class SerializedDetialView(View):
def get(self, request, *args, **kwargs):
print("*****Entered the SerializedDetialView **********")
obj_list= Tools_booked.objects.filter(auto_increment_id=1)
json_data = obj_list.serialize()
return HttpResponse(json_data, content_type='application/json')
class SerializedListView(View):
def get(self, request, *args, **kwargs):
json_data = Tools_booked.objects.all().serialize()
return HttpResponse(json_data, content_type='application/json')
错误回溯
json_data = Tools_booked.objects.all().serialize()
AttributeError: 'QuerySet' object has no attribute 'serialize'
但这行得通。
class SerializedDetialView(View):
def get(self, request, *args, **kwargs):
obj_list= Tools_booked.objects.filter(auto_increment_id=1)
json_data = serializers.serialize("json", obj_list )
return HttpResponse(json_data, content_type='application/json')
class SerializedListView(View):
def get(self, request, *args, **kwargs):
qs = Tools_booked.objects.all()
json_data = serializers.serialize("json", qs )
return HttpResponse(json_data, content_type='application/json')
如何在 models.py ,Tools_booked 类中使用 serialize() 方法。
【问题讨论】:
-
使用
super()方法 -
请分享您的序列化代码
-
@Wariored 在哪里添加 super()
-
@abhikumar22 嘿,我正在学习 Django REST API,此时我的应用程序没有任何 serializers.py 代码。当前尝试使用模型内部定义的方法序列化对象查询。以前它在视图中使用。
-
@Wariored 和
super()有什么关系???
标签: django django-models django-rest-framework django-serializer