创建多个对象时的性能问题

时间:2018-02-26 16:33:01

标签: django performance permissions django-views

我的目标是创建一个包含单个可编辑字段的矩阵。由于不应该允许不同的人编辑某些字段,我考虑创建一个名为CellCE的对象和一个对象级别权限。

my models.py

class CellCE(models.Model):
    row = models.ForeignKey('Descriptor',related_name='activecell', on_delete=models.CASCADE)
    col = models.ForeignKey('Descriptor',related_name='passivecell', on_delete=models.CASCADE)
    val = models.IntegerField(default=0)
    project = models.ForeignKey('Project', on_delete=models.CASCADE, default='1')

    #permission for Cells
    class Meta:
        permissions = (
        ("edit_cellCE", "Has permission to edit value of Cause and Effect cell"),
    )
    @classmethod
    def create(cls, row, col, project):
        CellCE = cls(row=row, col=col, project=project)
        CellCE.save()
        return CellCE

my views.py

def phase2(request, id):
    projectname = get_object_or_404(Project, pk=id)
    projectid = id
    project = Project.objects.get (id=projectid)
    projectdescriptors = Descriptor.objects.filter( project=projectid)

    for Descriptor.id in projectdescriptors:
        row = Descriptor.id
        for Descriptor.id in projectdescriptors:
            col = Descriptor.id
            if CellCE.objects.filter(row=row, col=col, project=project).exists():
                pass
            else:
                obj = CellCE.create(row, col, project)

    CellCElist = CellCE.objects.filter(project= project)

    context = {'CellCElist': CellCElist, 'projectname': projectname, 'projectid': projectid, 'projectdescriptors': projectdescriptors}
    return render(request, 'szenario/phase2.html', context)

我的模板

<table>
{% for drow in projectdescriptors %}
 {% if forloop.first %}
  <tr>
    <th align="left">Descriptors</th>
      {% for value in projectdescriptors %}
        <th>{{value}}</th>
      {% endfor %}
  </tr>
{% endif %}
<tr>
  <th align="left">{{drow}}</th>

  {% for dcol in projectdescriptors %}
    <td align="center">
      {% if forloop.parentloop.counter == forloop.counter %}
        -
      {% else %}
        {% for CellCE in CellCElist %}
          {% if CellCE.col == dcol %}
            {% if CellCE.row == drow %}
              Value =
              {{CellCE.val}}
            {% endif %}
          {% endif %}
        {% endfor %}
        <form  method="post">
          {% csrf_token %}
          <input type="submit" value="+1">
          <input type="submit" value="-1">
        </form>
      {% endif %}
    </td>
  {% endfor %}
</tr>
{% endfor %}
</table>

描述符的数量决定了矩阵的大小。每个Descriptor超过15&gt;加载页面需要更长时间或根本不起作用。我正在使用SQLLite。

问题:如何增加载荷速度并完成这项工作?数据库的更改是解决问题还是应该推翻我的概念。 任何帮助表示赞赏。

0 个答案:

没有答案