【发布时间】: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 个问题:
-
所有字段的更新视图页面弹出都是空白的,即使它们具有旧值。我不想改变所有领域。如果我不想更新所有字段,如何显示旧值?
-
更新视图页面的默认布局看起来并不优雅。我可以改变风格吗?
-
当单击输入框时,说名称字段,将显示一个下拉列表以提供一些我用作候选的历史值。我可以删除或更改此历史列表吗?
【问题讨论】:
-
你为什么不渲染你的
{{ form }}? -
渲染此模板的视图/路径是什么?它与结果页面的输出不匹配
-
@Willem 看完东贤的回答,我现在明白你的意思了。我没有渲染 {{form}} 因为我没有意识到 update_form 模板是定义更新页面的地方。我从教程中复制并忘记了它。我现在知道了。感谢您的快速回复。
-
@lain 抱歉,我还没明白你的问题。