【问题标题】:CRUD not able to displaly model instances in template to updateCRUD 无法在要更新的模板中显示模型实例
【发布时间】:2021-01-26 05:56:33
【问题描述】:

我有一个应用项目。我能够将实例保存到数据库中的模型没有问题。但是我无法通过 pk 将实例拉入 html 表单进行编辑和更新。请参阅下面的设置,任何人都可以提供任何指导或帮助,至于为什么没有发生这种情况以及我该如何解决?

views.py

def edit_properties(request, id):
     properties = Properties.objects.get(pk=id)
     context = {
         'properties': properties,
         'values': properties,
     }
     if request.method == 'GET':
         return render(request, 'sub/edit_properties.html', context)

【问题讨论】:

  • 嗨,欢迎来到 SO。您在运行此代码时看到的确切错误是什么?
  • 嗨Jahongir,这不是错误,只是无论模型表单,获取,方法,保存的实例,创建的数据都不会返回到html表单。让我编辑它然后保存它。我真的很难过!

标签: django model crud


【解决方案1】:

您最好使用ModelForm 来更新模型中的数据

class PropertiesEditForm(forms.ModelForm):
    class Meta:
        model = Properties

那么你需要更新你的视图来使用这个表单

def edit_properties(request, id=None):
     properties = Properties.objects.get(pk=id) if id else None
     form = PropertiesEditForm(request.POST or None, instance=properties)
     if request.POST:
         if form.is_valid():
            form.save()
            return HttpResponseRedirect("url_to_show_your_new_data")
     context = {
         'form': form,
     }
     return render(request, 'sub/edit_properties.html', context)

并在 html 文件中使用此表单

<form method="POST" action="URL_TO_EDIT_PROPERTIES_VIEW">{% csrf_token %}
{{ form }}
<input type="submit"/>
</form>

【讨论】:

  • 您好 Andrey,感谢您的帮助,不幸的是,这并没有解决问题。我仍然得到一个空白的 Html 表单,没有创建的保存数据实例可以编辑。
【解决方案2】:

发现问题,在我的 html 中,“{{values.address1}}”应该是“{{values.Address1}}”,因为数据库中的属性是首字母大写。

现在压力小了:)

    <div class="form-row my-3">
    <div class="form-group col-md-6"> 
    <label for="Addressline1">Address line 1</label>
    <input type="text" class="form-control" name="address1" id="address1Field" 
    value="{{values.address1}}">
    </div>  

感谢大家的帮助,

【讨论】:

  • 这就是为什么我说您需要使用modelform,而不是&lt;input type="text" class="form-control" name="address1" id="address1Field" value="{{values.1ddress1}}"&gt; ,您将使用{form. 1ddress1},django 将为您填写所有值
  • 感谢安德烈,这绝对是一种更聪明、更清洁且问题更少的解决方法。将实施。
猜你喜欢
  • 1970-01-01
  • 2014-09-27
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 2015-09-20
  • 2018-06-17
相关资源
最近更新 更多