我爲我的應用程序設置頁面創建了一個ModelForm(Django 1.9.1)。它應該以下面的方式工作:ModelForm的問題
- 設置頁面應該有多個文本字段與數據庫中的值。
- 如果我改變任何字段,然後按下「保存」按鈕 - 它應該更新數據庫中的相同字段,而不是添加新的。
型號:
class Settings(models.Model):
pkey_path = models.CharField(max_length=255)
class Meta:
db_table = "t_settings"
def __str__(self):
return self.id
形式:
class SettingsForm(ModelForm):
class Meta:
model = Settings
fields = ['pkey_path']
查看:
def settings_update(request):
if request.method == "POST":
form = SettingsForm(request.POST)
if form.is_valid():
form.save()
return render(request, 't_settings/index.html', {'form': form})
else:
form = SettingsForm()
return render(request, 't_settings/index.html', {'form': form})
urls.py:
app_name = 't_settings'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^update/', views.settings_update, name='settings-update'),
]
HTML表單:
<form action="{% url 't_settings:settings-update' %}" method="post" class="form-horizontal">
{% csrf_token %}
<div class="box-body">
<div class="form-group">
<label for="{{ form.pkey_path.id_for_label }}" class="col-sm-3 control-label">test</label>
<div class="col-sm-8">{{ form.pkey_path.errors }}
<input type="text" class="form-control"
name="{{ form.pkey_path.name }}"
id="{{ form.pkey_path.id_for_label }}"
placeholder="Path"
value="{{ form.pkey_path.value }}">
我嘗試使用Django文檔不同的方法,但無論如何,我得到:
{{ form.pkey_path.value }}
不顯示在從模板數據庫中的值- 形式本身的工作原理,但在數據庫中添加新行,而不是更新現有的行
嘗試閱讀本文,看看是否有幫助:http://stackoverflow.com/questions/10205657/django-modelform-create-or-update –