如何在Django中以更新形式显示数据库中已经存在的数据?

若昂·德·索萨(Joãode Sousa)

我目前有一个可以成功更新模型User的表格Client

我唯一希望做的就是访问更新页面时,表单已经具有当前信息(就像我们可以使用占位符一样,但是实际上是可编辑的数据),以便客户端可以编辑他需要的内容。

我也想知道是否有一种方法可以只更新更改的字段,或者是否必须更新所有内容,即使它是相同的。

这是我的表格:

class UpdateClient(ModelForm):
    address = forms.CharField(max_length=200, label="Morada", widget=forms.TextInput(attrs={'class': 'form-control'}))
    nif = forms.CharField(max_length=9, label="NIF", validators=[RegexValidator(r'^\d{1,10}$')], widget=forms.TextInput(attrs={'class': 'form-control'}))
    mobile = forms.CharField(max_length=9, label="Telemóvel", validators=[RegexValidator(r'^\d{1,10}$')], widget=forms.TextInput(attrs={'class': 'form-control'}))

    def clean_nif(self): 
        nif = self.cleaned_data['nif']; 
        if Clients.objects.filter(nif=nif).exists(): raise forms.ValidationError("NIF já existente.")
        return nif

    def __init__(self, *args, **kwargs):
        super(UpdateClient, self).__init__(*args, **kwargs)
        self.fields['first_name'].widget = TextInput(attrs={'class': 'form-control'})
        self.fields['last_name'].widget = TextInput(attrs={'class': 'form-control'})
        self.fields['email'].widget = EmailInput(attrs={'class': 'form-control'})

    class Meta:
        model = User
        fields = ('email','first_name','last_name', 'address', 'nif', 'mobile')

这是我的views.py

def client_det(request, nif):
    ls= Clients.objects.get(nif=nif)
    if request.method == 'POST':
        form = UpdateClient(request.POST, instance=ls.user)
        if form.is_valid():
            user = form.save()
            user.refresh_from_db()
            user.clients.address = form.cleaned_data.get('address')
            user.clients.nif = form.cleaned_data.get('nif')
            user.clients.mobile = form.cleaned_data.get('mobile')
            user.clients.save()
            return redirect('clients')
    else:
        form = UpdateClient()
    return render(request, 'backend/client_detail.html', {'form': form, 'ls': ls})

和我的 client_detail.html

    <form method="post">
                            {% csrf_token %}
                     <!-- Address -->
                            <h6 class="heading-small text-muted mb-4">Dados Cliente</h6>
                            <div class="pl-lg-4">
                            <div class="row">
                                    <div class="col-lg-4">
                                        <div class="form-group">
                                            <label class="form-control-label" for="input-first-name">Primeiro Nome</label>
                                            {{form.first_name}}
                                        </div>

(...)
席林特

实例化表单时,请为GET分支提供实例,就像在POST分支中一样。

def client_det(request, nif):
    ls= Clients.objects.get(nif=nif)
    if request.method == 'POST':
        form = UpdateClient(request.POST, instance=ls.user)
        ...
    else:
        form = UpdateClient(instance=ls.user)
    return render(request, 'backend/client_detail.html', {'form': form, 'ls': ls})

编辑:我想念您的问题部分,那里您也需要客户信息集。

我认为,您可以__init__在表单上的函数中执行此操作,也可以通过初始参数传递值。

范例1:

def __init__(*args, **kwargs):
     super().__init__(*args, **kwargs)
     if self.instance:
         self.fields['nif'] = self.instance.clients.nif
         ...

范例2:

 form = UpdateClient(instance=ls.user, initial={"nif": ls.user.clients.nif, ...})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显示数据库中已经存在数据的文本

来自分类Dev

如果数据库中已经存在值,如何显示消息?

来自分类Dev

如何在 Visual Studio 中创建一个已经存在的数据库?

来自分类Dev

如何在模板中显示数据库中的数据

来自分类Dev

如何在 Ionic 中显示 Laravel 数据库数据

来自分类Dev

如何在React中显示以文件形式下载并保存在服务器上的文件夹中且文件路径存储在数据库中的图像?

来自分类Dev

如何在标签c#中以windows形式显示数据库表的所有列

来自分类Dev

创建之前如何检查我的数据是否已经存在于数据库中?

来自分类Dev

如何在Django中用celery运行任务并将结果保存在Django数据库中?

来自分类Dev

Microsoft Azure移动服务不显示数据库中已经存在的表

来自分类Dev

用户已经存在于数据库消息中,未使用php显示

来自分类Dev

如何...显示数据库中的数据

来自分类Dev

如何在 symfony 4 中以下拉菜单的形式显示从关系数据库中获取的数据的表单?

来自分类Dev

在Yii中以表格形式显示数据库中的数据

来自分类Dev

如何在数据库中存储id但在Django的modelchoicefield中显示名称?

来自分类Dev

如何检查文本框中的值在连接的数据库中是否已经存在

来自分类Dev

使用IF条件时,如何在django中的单个查询中更新数据库?

来自分类Dev

如何从Django上已经制作好的mysql数据库中查看数据?

来自分类Dev

Django显示数据库中的图像

来自分类Dev

如何在WebView中从数据库显示缅甸字体

来自分类Dev

如何在Android的Glide中显示数据库图像?

来自分类Dev

如何在WebView中从数据库显示缅甸字体

来自分类Dev

如何在数据库中显示图像?

来自分类Dev

数据库中的Django更新对象

来自分类Dev

数据库中的Django更新对象

来自分类Dev

如何在mysql数据库中更新时间戳?

来自分类Dev

如何在SQLite数据库中更新值?

来自分类Dev

如何在laravel 5.2中更新数据库表

来自分类Dev

如何在android sqlite中更新数据库表?

Related 相关文章

  1. 1

    显示数据库中已经存在数据的文本

  2. 2

    如果数据库中已经存在值,如何显示消息?

  3. 3

    如何在 Visual Studio 中创建一个已经存在的数据库?

  4. 4

    如何在模板中显示数据库中的数据

  5. 5

    如何在 Ionic 中显示 Laravel 数据库数据

  6. 6

    如何在React中显示以文件形式下载并保存在服务器上的文件夹中且文件路径存储在数据库中的图像?

  7. 7

    如何在标签c#中以windows形式显示数据库表的所有列

  8. 8

    创建之前如何检查我的数据是否已经存在于数据库中?

  9. 9

    如何在Django中用celery运行任务并将结果保存在Django数据库中?

  10. 10

    Microsoft Azure移动服务不显示数据库中已经存在的表

  11. 11

    用户已经存在于数据库消息中,未使用php显示

  12. 12

    如何...显示数据库中的数据

  13. 13

    如何在 symfony 4 中以下拉菜单的形式显示从关系数据库中获取的数据的表单?

  14. 14

    在Yii中以表格形式显示数据库中的数据

  15. 15

    如何在数据库中存储id但在Django的modelchoicefield中显示名称?

  16. 16

    如何检查文本框中的值在连接的数据库中是否已经存在

  17. 17

    使用IF条件时,如何在django中的单个查询中更新数据库?

  18. 18

    如何从Django上已经制作好的mysql数据库中查看数据?

  19. 19

    Django显示数据库中的图像

  20. 20

    如何在WebView中从数据库显示缅甸字体

  21. 21

    如何在Android的Glide中显示数据库图像?

  22. 22

    如何在WebView中从数据库显示缅甸字体

  23. 23

    如何在数据库中显示图像?

  24. 24

    数据库中的Django更新对象

  25. 25

    数据库中的Django更新对象

  26. 26

    如何在mysql数据库中更新时间戳?

  27. 27

    如何在SQLite数据库中更新值?

  28. 28

    如何在laravel 5.2中更新数据库表

  29. 29

    如何在android sqlite中更新数据库表?

热门标签

归档