【问题标题】:Return multiple user in Django在 Django 中返回多个用户
【发布时间】:2020-09-28 15:18:54
【问题描述】:

我的测试没有显示 get() 返回了多个权限——它返回了 2 个! 但是我想返回多个权限,但我无法获得列表。我正在使用 ajax 在模式上显示这些列表。我的问题是我想在下面显示基于 idd 的所有用户类型名称。如果有专家可以提供帮助,请提前分享一些解决方案。

returned more than one permissions -- it returned 2!

Permissiontable usertypetable

views.py

def ajax(request):
  idd = request.GET.get('id')

  app_permission_tbl_usid = permissions.objects.get(user_id=idd)
  app_permission_tbl_permid = app_permission_tbl_usid.permission_id
  datas = usertypes.objects.get(id=app_permission_tbl_permid)


  list_of_permission = datas.usertype
  return JsonResponse({"result": list_of_permission})

models.py

class AuthUser(models.Model):
  password = models.CharField(max_length=128)
  last_login = models.DateTimeField(blank=True, null=True)
  is_superuser = models.IntegerField()
  username = models.CharField(unique=True, max_length=150)
  first_name = models.CharField(max_length=150)
  last_name = models.CharField(max_length=150)
  email = models.CharField(max_length=254)
  is_staff = models.IntegerField()
  is_active = models.IntegerField()
  date_joined = models.DateTimeField()

  class Meta:
     managed = False
     db_table = 'auth_user'

class usertypes(models.Model):
  usertype = models.CharField(max_length=264)
  description = models.CharField(max_length=264)
  status = models.CharField(max_length=264)

class permissions(models.Model):
  user = models.ForeignKey(AuthUser, models.DO_NOTHING)
  permission = models.ForeignKey(usertypes, models.DO_NOTHING)

javascript

<script type="text/javascript">
function modal (post_id) {
    $.ajax({
        url: '/ajax/',
        data: {
            'id': post_id
        },
        success: function(response){
            document.getElementById('firstNameValueId').innerHTML = response.result
            $("#editmodal").modal('show');
        }
    });
}

我的模态显示结果

<select multiple="multiple" id="firstNameValueId" size="10" class="duallistbox">
<option value="1">Admin</option>
</select>

【问题讨论】:

  • 您应该使用.filter 而不是.get。这也意味着你不能使用.permission_id,因为有多个。
  • 可以分享一下相关模型吗?
  • @WillemVanOnsem 感谢您的回复,我已经更新并添加了上面的模型。请帮帮我

标签: python django


【解决方案1】:

您应该使用.filter 而不是.get。这也意味着你不能使用.permission_id,因为有多个。

您可以使用在permissions 模型上连接的查询,从而过滤:

def ajax(request):
    datas = list(usertypes.objects.filter(
        permissions__user_id=request.GET['id']
    ).values_list('usertype', flat=True))
    return JsonResponse({'result': datas})

注意:Django 中的模型是用 PerlCase 编写的,而不是 snake_case, 所以您可能想将模型从 Permission 重命名为 permissions


注意:通常 Django 模型被赋予一个单数名称,所以UserType而不是UserTypes

如果您相应地重命名模型,则查询应重写为:

def ajax(request):
    datas = list(UserType.objects.filter(
        permission__user_id=request.GET['id']
    ).values_list('usertype', flat=True))
    return JsonResponse({'result': datas})

【讨论】:

  • 感谢您的快速响应,但我收到错误 'usertypes' object has no attribute 'values_list' 。 values_list 是默认值吗?
  • 这是表格的样子,i.stack.imgur.com/gUzHl.jpg 只想通过获取 idd 和我的用户类型 i.stack.imgur.com/cul0M.jpg 来检索用户类型名称列表,感谢您的回复谢谢
  • @D-jason:对不起,我打错了,是.filter,不是.get
  • 有效!我欠你的谢谢。我还有一个问题,您知道如何在选项中显示这些用户类型名称吗?我在上面添加了我的ajax,我认为这是最快的方式来要求我明天的辩护请帮助谢谢!
  • 你喜欢使用循环吗?分隔列表的每个值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 2016-05-06
  • 2017-08-30
  • 2023-03-17
  • 2018-09-22
  • 2021-08-02
相关资源
最近更新 更多