【问题标题】:Django UpdateView: How to display the original values?Django UpdateView:如何显示原始值?
【发布时间】:2021-10-09 09:56:01
【问题描述】:

我正在使用 Django UpdateView 来更新模型类

class TestCase(models.Model):
   name = models.CharField(max_length=200)
   executable = models.CharField(max_length=1023) 
   parameter_value_list = models.TextField()   
   test_type = models.CharField(max_length=200) 
   created_by = models.CharField(max_length=200, default = "user")     
   create_datetime = models.DateTimeField("testcase created on", auto_now = True)

我的看法是:

class MyEditCaseView(UpdateView):
       model = TestCase
       fields = ['name', 'executable', 'parameter_value_list', 'test_type']
       template_name_suffix = '_update_form'
       def get_success_url(self):
           return reverse("myApp:testCase")

我的模板如下:

<form action="{% url 'myApp:editCase' case.id %}" method="post">
      {% csrf_token %}
      <input type="submit" value="Edit">    
    </form>

网址:

path('editCase/<int:pk>/', views.MyEditCaseView.as_view(), name='editCase')

它工作正常,但我有 3 个问题:

  1. 所有字段的更新视图页面弹出都是空白的,即使它们具有旧值。我不想改变所有领域。如果我不想更新所有字段,如何显示旧值?

  2. 更新视图页面的默认布局看起来并不优雅。我可以改变风格吗?

  3. 当单击输入框时,说名称字段,将显示一个下拉列表以提供一些我用作候选的历史值。我可以删除或更改此历史列表吗?

【问题讨论】:

  • 你为什么不渲染你的{{ form }}
  • 渲染此模板的视图/路径是什么?它与结果页面的输出不匹配
  • @Willem 看完东贤的回答,我现在明白你的意思了。我没有渲染 {{form}} 因为我没有意识到 update_form 模板是定义更新页面的地方。我从教程中复制并忘记了它。我现在知道了。感谢您的快速回复。
  • @lain 抱歉,我还没明白你的问题。

标签: python html django


【解决方案1】:

Django 表单可以展开。

    <!--begin::Form-->
    <form method="post">
        {% csrf_token %}
            {% field in form.fields %}
                <input name="{{ field.name }}" type="text" value="{{ field.value }}"/>
            {% endfor %}
    </form>
    <!--end::Form-->

  1. 所有字段的更新视图页面弹出都是空白的,即使它们具有旧值。我不想改变所有领域。如果我不想更新所有字段,如何显示旧值?

你可以像上面的例子一样使用默认值,值字段。

  1. 更新视图页面的默认布局似乎不优雅。我可以改变风格吗?

您可以在每个输入字段中使用类属性。

  1. 单击输入框时,显示名称字段,将显示一个下拉列表以提供一些我用作候选的历史值。我可以删除或更改此历史列表吗?

如果您将 autucomplete 属性设置为关闭,则不会出现任何历史记录。

<input type="text" autocomplete="off" />

【讨论】:

  • 很好的答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 2020-01-02
  • 1970-01-01
相关资源
最近更新 更多