编辑和更新HTML数据表Django

时间:2017-03-10 16:26:43

标签: jquery html django django-templates models

我刚刚在Django 1.10中构建了一个系统,它基本上是一个用户可以填写并从订单中产生技术问题的表单。如下图所示:

enter image description here

将问题提交到数据库后,会出现一个表格,其中显示所有问题: enter image description here

这是我的模特:

class TechnicalValidationSystem(models.Model):
    user = models.ForeignKey(User)
    author = models.CharField(max_length=30)
    soss = models.CharField(max_length=30)
    case_opened = models.CharField(max_length=30)
    cause_reason = models.CharField(max_length=35)
    date_created = models.DateTimeField(blank=True, null=True)
    comments = models.CharField(max_length=500)
    issue_solved = models.BooleanField(default=False)

这是我的HTML表格:

 <div class="table-responsive">
                            <table class="table table-striped table-bordered table-hover dataTables-example" >
                                <thead>
                                    <tr>
                                        <th>SO-SS</th>
                                        <th>Case Opened</th>
                                        <th>Cause Reason</th>
                                        <th>Comments</th>
                                        <th>Date Created</th>
                                        <th>Created by:</th>
                                        <th>Issue Solved?</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    {% for linea in lineas_de_reporte %}
                                    <tr>
                                        <td>{{ linea.soss }}</td>
                                        <td>{{ linea.case_opened }}</td>
                                        <td>{{ linea.cause_reason }}</td>
                                        <td>{{ linea.comments }}</td>
                                        <td>{{ linea.date_created }}</td>
                                        <td>{{ linea.author }}</td>
                                        <td>{{ linea.issue_solved }}</td>
                                    </tr>
                                    {% endfor %}
                                </tbody>

                            </table>
                        </div>

我现在需要的是找到一种方法,用户可以修改此表,主要是问题是否已解决,并使用该响应更新我的数据库。任何人都知道如何用django做到这一点?如果不是,可以使用Jquery或其他任何东西。

如果你们需要别的东西,或者我错过了什么,请告诉我,谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

[更新]:HTML中的内容

<div class="table-responsive">
    <table class="..." >
        <thead>
            ...
        </thead>
        <tbody>
            {% for linea in lineas_de_reporte %}
                <tr>
                    ...
                    <td>
                        <form action="{% url 'view_name' %}" method="GET">
                            <input type="hidden" name="linea-id" value="{{ linea.id }}" />
                            <input type="submit" name="submit-issue-solved" value="Submit" />
                        </form>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
</div>

是的,只有Django可以发生这种情况(如果你愿意,可以使用jQuery)。

您应该将ISSUE RESOLVED?列更改为一个表单,其中每个单元格(当然使用{% for %}循环)将包含两个单选按钮(YesNo) ,一个隐藏的(具有唯一键的值。我猜SOSS在您的数据库表中是唯一的?)和收音机旁边的提交按钮。

然后,该表单应自行提交(通过action={% url 'a_view_name_here' %}属性确定)到url并由view处理。在该视图中,您可以获取值,用户选择(取决于使用的方法,即request.GET.get('issue_resolved')request.POST.get('issue_resolved')),并以相同的方式获取唯一值的值(即SOSS

最后,您将向数据库发出查询以获取TechnicalValidationSystem SOSS并更新其issue_resolved布尔值(如下所示:

def issue_resolved(request):
    # if GET data contain a key named 'linea-id'...
    if request.GET.get('linea-id'):
        # ... this means that user clicked on the submit button
        # get the id of linea
        linea_id = request.GET.get('linea-id')
        # fetch object from db, based on that id (aka pk)
        linea = TechnicalValidationSystem.objects.get(id=linea_id)
        # change its attribute to True
        linea.issue_resolved = True
        # update db with the new value
        linea.save(update_fields=['issue_resolved'])
    return render(request, 'template/to/the/table.html', context_here)