我试图在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` 谢谢你的帮助
1条答案
按热度按时间h6my8fg21#
初始化时将初始对象传递给窗体以设置初始值。请注意表单和模型中声明的字段的名称。