亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在表單中顯示只讀唯一標識?

如何在表單中顯示只讀唯一標識?

一只名叫tom的貓 2023-01-04 11:22:43
我目前有一個稱為服務的模型,顯示在這里...class Services(models.Model):    service_sku = models.AutoField(primary_key=True)    name = models.CharField(max_length=200, null=True)    price = models.FloatField(null=True)forms.pyclass ServiceForm(forms.ModelForm):    class Meta:        model = Services        fields = '__all__'基于上面顯示的代碼,我有兩個視圖,一個將創建上面模型的實例,另一個視圖將更新實例,如下所示def NewServices(request):    form = ServiceForm()    if request.method == 'POST':        form = ServiceForm(request.POST or None)        if form.is_valid():            form.save()            return redirect('/')    return render(request, 'accounts/new_services.html', {'form': form})def EditServices(request,pk):    service = Services.objects.get(service_sku=pk)    form = ServiceForm(instance=service)    if request.method == 'POST':        form = ServiceForm(request.POST, instance=service)        if form.is_valid():            form.save()            return redirect('/')    context = {'form':form}    return render(request, 'accounts/edit_services.html',context)模板如下<div class="row">    <div class="col-md-7">        <div class="card card-body">            <form action="" method="POST">                {% csrf_token %}                {{form}}                <hr>                <input type="submit" name="Update">            </form>        </div>    </div></div>是否可以在我的模板表單中顯示 service_sku 的 readyonly,當實例需要更新時以及 service_sku readonly 在創建實例時顯示為在模板中自動生成?
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

是的。您可以在表單中包含該字段,因此您可能應該制作一個單獨的表單來更新:


class ServiceEditForm(forms.ModelForm):

    service_sku = forms.IntegerField(disabled=True)


    class Meta:

        model = Services

        fields = ('service_sku', 'name', 'price')

在表單中,您只需使用該新表單:


def EditServices(request,pk):

    service = Services.objects.get(service_sku=pk)

    if request.method == 'POST':

        form = ServiceEditForm(request.POST, request.FILES, instance=service)

        if form.is_valid():

            form.save()

            return redirect('/')

    else:

        form = ServiceEditForm(instance=service)

    context = {'form':form}

    return render(request, 'accounts/edit_services.html', context)

使用disabled=True[Django-doc]不僅可以確保該字段在客戶端被禁用,而且還可以防止有人發出惡意的 POST 請求。



查看完整回答
反對 回復 2023-01-04
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號