django - “ManyRelatedManager”类型的对象不是 JSON 可序列化的
问题描述
我正在开发一个虚拟应用程序,在这里我想从 MuUser 模型中选择多个 user_name 并将其返回给 Sessions 模型。在执行此操作时,我收到此错误
这是我的代码
我的 MyUser 模型
MyUser 类(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True)
user_name=models.CharField(max_length=10,blank=True,null=True,unique=True)
date_of_birth=models.DateField(null=True,blank=True)
mobile_number=models.CharField(max_length=20,blank=True,null=True)
address=models.CharField(max_length=100,blank=True,null=True)
country=models.CharField(max_length=20,blank=True,null=True)
joining_date=models.DateField(null=True,blank=True)
Rating_CHOICES = (
(1, 'Poor'),
(2, 'Average'),
(3, 'Good'),
(4, 'Very Good'),
(5, 'Excellent')
)
Rating=models.IntegerField(choices=Rating_CHOICES,default=1)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = MyUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['date_of_birth']
def __str__(self):
return str(self.user_name)
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
@property
def is_staff(self):
return self.is_admin
我的会话模型
类会话(模型。模型):
Host=models.ForeignKey(MyUser,on_delete=models.CASCADE,related_name='host')
game=(
('cricket','cricket'),
('football','football'),
('basketball','basketball'),
('hockey','hockey'),
('gym','gym'),
('baseball','baseball'),
)
Sport=models.CharField(max_length=20,choices=game)
SPORT=(
('Indoor','Indoor'),
('Outdoor','Outdoor'),
)
Sports_category=models.CharField(max_length=10,choices=SPORT)
SESSIONS=(
('General','General'),
('Business','Business'),
)
Session_category=models.CharField(max_length=15,choices=SESSIONS)
TYPE=(
('Paid','Paid'),
('Free','Free'),
)
Session_type=models.CharField(max_length=10,choices=TYPE)
Created=models.DateField(null=True,blank=True)
Session_Date=models.DateField(null=True,blank=True)
Location=models.ForeignKey(MyUser,related_name='street',on_delete=models.CASCADE)
Player=models.CharField(max_length=100,blank=False)
Start_time=models.TimeField(auto_now=False, auto_now_add=False)
End_time=models.TimeField(auto_now=False, auto_now_add=False)
Duration=models.CharField(max_length=30,blank=False)
status=(
('1','Active'),
('2','UnActive'),
)
Status=models.CharField(max_length=20,choices=status)
Equipment=models.TextField()
Duration=models.CharField(max_length=20,blank=False)
#Level=models.ForeignKey(IntrestedIn,blank=True,on_delete=models.CASCADE)
GENDER=(
('Male','Male'),
('Female','Female'),
('Male and Female','Male and Female'),
('Other','Other'),
)
Gender=models.CharField(max_length=20,choices=GENDER ,blank=True)
Fee=models.CharField(max_length=50,blank=True,default='0')
Players_Participating=models.ManyToManyField(MyUser,blank=True)
def __str__(self):
return str(self.Host)
类 SessionViewSet(viewsets.ViewSet):
def create(self, request):
try:
Host= request.data.get('Host')
Sport = request.data.get('Sport')
Sports_category = request.data.get('sports_category')
#Location = request.data.get('Location')
Session_category = data.get('session_category')
Session_type=data.get('session_type ')
Created=data.get('Created')
Session_Date=data.get('Session_Date')
Location=request.data.get('Location')
Start_time=request.data.get('Start_time')
End_time=request.data.get('End_time')
Duration=request.data.get('Duration')
Level=request.data.get('Level')
Player=request.data.get('Player')
Gender=request.data.get('Gender')
Fee=request.data.get('Fee')
Equipment=request.data.get('Equipment')
Players_Participating=request.data.get('Players_Participating')
new=Session()
new.Host=MyUser.objects.get(user_name=Host)
new.Sport=Sport
new.Sports_category=sports_category
new.Session_category=session_category
new.Session_type=session_type
new.Created=Created
new.Session_Date=Session_Date
new.Location=MyUser.objects.get(address=Location)
new.Start_time=Start_time
new.End_time=End_time
new.Duration=Duration
new.Level=IntrestedIn.objects.get(Level=Level)
new.Player=Player
new.Equipment=Equipment
#new.Players_Participating=MyUser.objects.all(user_name=Players_Participating)
new.Players_Participating=Players_Participating
new.save()
return Response({'Submitted Successfully':True})
except Exception as error:
return Response({"message": str(error), "success": False},
status=status.HTTP_200_OK)
def list(self, request):
try:
search = request.GET.get('search')
sport=request.GET.get('sport')
if search:
users = Session.objects.filter(Host__user_name=search)
ashu=users.count()
page = request.GET.get('page')
paginator = Paginator(users,1)
try:
user = paginator.page(page)
except PageNotAnInteger:
user = paginator.page(1)
except EmptyPage:
user = paginator.page(paginator.num_pages)
use = []
for user in users:
use.append({
'Host':user.Host.user_name,
'Sport':user.Sport,
'Sports_category':user.Sports_category,
'Session_category':user.Session_category,
'Session_type':user.Session_type,
'Created':user.Created,
'Session_Date':user.Session_Date
})
return Response({'output':use,'Session Created':ashu})
if sport:
users = Session.objects.filter(Sport=sport)
page = request.GET.get('page')
paginator = Paginator(users,1)
try:
user = paginator.page(page)
except PageNotAnInteger:
user = paginator.page(1)
except EmptyPage:
user = paginator.page(paginator.num_pages)
use = []
for user in users:
use.append({
'Host':user.Host.user_name,
'Sport':user.Sport,
#'Sports_category':user.Sports_category,
#'Session_category':user.Session_category,
#'Session_type':user.Session_type,
#'Created':user.Created,
#'Session_Date':user.Session_Date
})
return Response({'out':use})
else :
users = Session.objects.all()
page = request.GET.get('page')
paginator = Paginator(users,1)
try:
user = paginator.page(page)
except PageNotAnInteger:
user = paginator.page(1)
except EmptyPage:
user = paginator.page(paginator.num_pages)
use = []
for user in users:
use.append({
'Host':user.Host.user_name,
'Sport':user.Sport,
'Sports_category':user.Sports_category,
'Session_category':user.Session_category,
'Session_type':user.Session_type,
'Created':user.Created,
'Session_Date':user.Session_Date,
"Players_Participating":user.Players_Participating,
})
return Response({"success":True, "users":use, "pages":paginator.num_pages})
except Exception as error:
traceback.print_exc()
return Response({"message": str(error), "success": False}, status=status.HTTP_200_OK)
解决方案
推荐阅读
- javascript - Twig 根据分辨率对项目进行分组
- python - 如何限制 tensorflow GPU 内存使用?
- c - 如何在不使用字符串库的情况下查找另一个字符数组中是否存在字符数组?
- sql - 使用插入的 id 在不同表中创建多行的 sql 查询
- asp.net - OnSelectedIndexChange 想要加载一个函数并将数据放入标签而不刷新页面
- angular-schematics - Angular Schematics,如何使用自己的原理图
- node.js - Alexa 会话保持打开状态,不会向用户提示。为什么认证反馈失败?
- java - 自定义服务器肥皂故障字符串
- google-cloud-platform - 在 Google Cloud Storage Bucket 中放气 7z
- android - 如何在 Unity Engine 的帮助下进行对象跟踪?