用户类型的对象不可JSON序列化

时间:2019-04-10 10:45:37

标签: python django django-models django-views

我正在为我的网页创建一个自动完成的搜索,并尝试使用ajax调用从数据库中获取用户名。

我的AJAX调用运行正常,并转到了指定的URL。

我已经尝试过使用JSON编码器,但这也没有用。

我对DJANGO有点陌生。请帮助

我的 views.py

def autocomplete(request):
if request.is_ajax():
    q = request.GET.get('search', '').capitalize()
    search_qs = Profile.objects.filter(user__username__startswith=q)
    results = []
    print (q)
    for r in search_qs:
        results.append(r.user)
    data= json.dumps(list(results), cls=DjangoJSONEncoder)
else:
    data = 'fail'
mimetype = 'application/json'
return HttpResponse(data, mimetype)

我的 models.py

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')

def __str__(self):
    return f'{self.user.username} Profile'

错误,我得到了

TypeError: Object of type User is not JSON serializable
[] "GET /ajax_calls/search/?**term=he** HTTP/1.1" 500 15860

1 个答案:

答案 0 :(得分:1)

我不知道您为什么要通过$sql = " INSERT INTO [dbo].[akcja] ([ak_akt_id] ,[ak_sp_id] ,[ak_kolejnosc] ,[ak_interwal] ,[ak_zakonczono] ,[ak_sc_id] ,[ak_pr_id]) VALUES ( $($item.akt_id) ,$($item.sp_id) ,0 ,0 ,$($item.data_dodania) ,NULL ,NULL) select SCOPE_IDENTITY() as [InsertedId] " $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; User Id=$login; Password=$password; Integrated Security = false"; $SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = $sql $SqlCmd.Connection = $sqlConnection $SqlConnection.Open() $InsertedId = $SqlCmd.ExecuteScalar() $SqlConnection.Close() 查询,而在这里您可以直接通过Profile查询。我认为正确的实现应该是这样的:

User

Documentation可以在这里找到。