如何在django模板中设置默认值

blpfk2vs  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(276)

我试图在django模板中将默认值设置为输入字段,我有两个模型 tables ```
class Ticketing(models.Model):
Title = models.CharField(max_length=40)
b = models.DecimalField(max_digits=5,decimal_places=2)
#others

class Cancel(models.Model):
ticket = models.ForeignKey(Ticketing,on_delete=models.CASCADE,related_name="ticket")
title = models.CharField(max_length=40)
#others

forms.py

class CancelForm(forms.ModelForm):
class Meta:
model = Cancel
fields = ['title',]

我的观点

def create_cancel(request,id):
booking_obj = get_object_or_404(Ticketing,id=id)
form = CancelForm()
if request.method == 'POST':
form = CancelForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.admin = request.user
obj.ticket= booking_obj
obj.save()
return redirect('cancel:create' ,booking_obj.id)

 context = {
'    booking_obj':booking_obj,'form':form
 }
 return render(request,'cancel/create.html',context)
网址

path('create/int:id',create_cancel,name='create'),
path('ajax/check-title/int:id',create_cancel,name='check_title'),

我试着回电话 `title` 使用ajax,但它不起作用

@login_required
def check_invoice_paid(request,id):
obj = get_object_or_404(Ticketing,id=id)
data = {
'title':obj.title
}
return JsonResponse(data)

我的模板

$('select').change(function() {
let elm = $(this);
data = {};
data[elm.attr("name")] = elm.val();
$.ajax({
url:'{% url 'cancel:check_title' booking_obj.id %}',
data:data,
success:function(data){
if (data.title){
elm.closest("div.ticket ").find("input.title").val(data.title);
}

                }

            }
        )
    })
                <div class="ticket border border-purple-900 mt-2 text-center rounded-lg p-2 grid grid-cols-1 md:grid-cols-1 gap-3" dir="ltr" >
                    <p>{{form.title | add_class:'title bg-transparent focus:outline-none w-8/12' }} :title</p>

                </div>

            </div>
            <button class="header pt-2  text-white px-4 p-1 rounded-lg mt-4">save</button>
        </form>
但还是不行!我做错什么了吗?
我正在试着设置 `booking_obj.title` 作为的默认值 `title` 输入 `Cancel` 谢谢你的帮助
h6my8fg2

h6my8fg21#

初始化时将初始对象传递给窗体以设置初始值。请注意表单和模型中声明的字段的名称。

def create_cancel(request,id):
    booking_obj = get_object_or_404(Ticketing,id=id)

    # set initial data here
    initial_data = {'title': 'Title' }
    form = CancelForm(initial=data)

    if request.method == 'POST':
        form = CancelForm(request.POST)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.admin = request.user
            obj.ticket= booking_obj
            obj.save()
            return redirect('cancel:create' ,booking_obj.id)

     context = {
    '    booking_obj':booking_obj,'form':form
     }
     return render(request,'cancel/create.html',context)

相关问题