在模型表单中使用自动完成选择小部件,可以通过以下步骤实现:
以下是一个示例代码,演示了如何在模型表单中使用自动完成选择小部件:
# models.py
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
class Product(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
# forms.py
from django import forms
from .models import Product
class ProductForm(forms.ModelForm):
class Meta:
model = Product
fields = ['name', 'category']
widgets = {
'category': forms.TextInput(attrs={'data-autocomplete-url': '/autocomplete/category'}),
}
# views.py
from django.http import JsonResponse
from django.views.decorators.http import require_GET
from .models import Category
@require_GET
def autocomplete_category(request):
term = request.GET.get('term', '')
categories = Category.objects.filter(name__icontains=term)
results = [category.name for category in categories]
return JsonResponse(results, safe=False)
# template.html
<form method="post" action="{% url 'product_create' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
$('[data-autocomplete-url]').each(function() {
$(this).autocomplete({
source: $(this).data('autocomplete-url')
});
});
});
</script>
在上述示例中,模型类Category
表示商品类别,模型类Product
表示商品。表单类ProductForm
使用自动完成选择小部件来选择商品类别。视图函数autocomplete_category
处理自动完成请求,返回匹配的商品类别名称。模板文件template.html
渲染表单,并使用jQuery库实现自动完成功能。
这是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。腾讯云提供的相关产品和服务可以参考腾讯云文档。
领取专属 10元无门槛券
手把手带您无忧上云