如何在一页中编辑多个用户信息?

Posted

技术标签:

【中文标题】如何在一页中编辑多个用户信息?【英文标题】:How can I edit multiple users info in one page? 【发布时间】:2018-06-28 11:17:51 【问题描述】:

假设我想在我的网站中创建一个页面,我希望能够在工作人员在场与否的情况下进入数据库。

每个工人都有单独的个人资料页面。

我的models.py

class profile(models.Model):
    ...#other fields
    username = model.Charfield(max_length=26, blank=false)

class attendence(models.Model):
    user = models.ForeignKey(profile, related_name='attendence')
    28January2018 = models.BooleanField(default=1)

原型图片:

在原型图中,如果是绿色,则布尔字段中应为True,表示存在(这是默认值),当我点击他们的名字时,布尔字段为false表示不存在,它会显示为红色。

如何做到这一点?我需要模板和视图代码。

【问题讨论】:

我可以为你写,但关键是你的问题太全球化了,先尝试一下,然后在 *** 中询问阅读 django 的文档 到目前为止,我已经学会了编辑一个用户的数据,但我无法为许多用户做同样的事情。只是给我一些提示。您不需要编写整个代码。 好吧,我已经开始想办法了。到目前为止,在视图中,我的表单中用户是一个但字段很多,这里字段是一个但用户很多。 希望我的回答对您有所帮助,如果您需要一些东西,只是发表评论而无法联系到您 :) 仍然,我无法创建用户众多但数据库字段为一个的表单。我应该在一页中创建多个表单吗?您可以参考一些教程或其他内容吗? 【参考方案1】:

好的..

所以首先你创建你的视图来填充表单

def populate_my_form(request):
  context = 
  context['users'] = Users.objects.all()
  return render(request, 'myapp/my_template.html', context)

在你的模板中你应该有类似的东西

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
 <form action=" url 'post_my_edits' " method="get" id="employees">
      % for user in users%
        #store the data in hidden inputs will be easier for you to understand id  
        <input id="input_for_user_user.id" name="user.id" value="user.is_present" style="display:none" type="text" disabled> 
      <div id="user.id"  class="user_is_present user.is_present">user.first_name</div>
      % endfor %
 </form> 

<button type="submit" form="employees" value="Submit">Submit</button>
<script>  
          $('.user_is_present').click(function()
            my_input = $("#input_for_user_"+$(this).attr('id'))
            if( my_input.val() === 'present')
               $(this).removeClass( "present" )
               $(this).addClass("absent")
               my_input.val("absent")
            
            if( my_input.val() === 'absent')
               $(this).removeClass( "absent" )
               $(this).addClass("present")
               my_input.val("present")
            
        )

</script>

在js中去

假设你的网址中有一个网址

path('update_users/', views.update_users, name='update_users')

还有风景

def update_users(request):
    for user in Users.objects.all():
        user.is_present = request.POST[str(user.id)]
        user.save()

    context = 
    context['users'] = Users.objects.all()
    return render(request, 'myapp/my_template.html', context)

在你的 CSS 中

.user_is_present
 height:50px;
 width:100px;

.present
 background-color:green;

.absent
 background-color:red;

重复了一小段代码,但很抱歉,我试图向您展示该技术,然后您阅读更多内容,您会有所改进;)

回顾

无论你点击一个用户,它都会改变背景颜色,提交后他们的状态会将信息保存给你的用户

【讨论】:

在你建议上网后,我查了几个教程到现在。不过,感谢您为编写分析器所付出的努力。我现在有一些错误要修复。我会尽快试试你的代码。 另一件事,我需要知道,为什么第一个代码中有两个上下文。 只是先创建对象上下文,然后用数据填充它

以上是关于如何在一页中编辑多个用户信息?的主要内容,如果未能解决你的问题,请参考以下文章

在一页上的文本区域中写入,在另一页中显示文本数据[关闭]

我如何在一页中使用多个jquery版本[重复]

如何使 react-hook-form 在一页中使用多个表单?

一页中的多个 Summernote 所见即所得编辑器具有相同的占位符

Laravel Livewire 在一页中进行多个分页

在一页中使用多颤动块