gpt4 book ai didi

python - 在 django ajax_lookup 中配置 ajax 查找

转载 作者:行者123 更新时间:2023-12-01 05:53:37 25 4
gpt4 key购买 nike

我正在使用 django_ajax用于在表单元素之一中进行 ajax 查找的库。

模型:

class Alpha(models.Model):
name = models.CharField()
description = models.TextField()
submitted = models.BooleanField(default=False)

形式

class MyForm(forms.Form):
alpha = AutoCompleteSelectField('alpha')

def __init__(self, loser, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.loser = loser
self.fields['alpha'].widget.attrs['class'] = 'big-text-box'

当前实现的问题是它向我显示了所有 alpha 条目,但在查找字段中我只需要那些 已提交alpha > 是

如何编写选择器?

最佳答案

README 中所述在项目中,您可以使用自定义查找类来实现您的目标。

在你的应用目录中创建一个文件lookups.py(名称是常规的),并在其中定义以下类:

from ajax_select import LookupChannel
from django.utils.html import escape
from django.db.models import Q
from yourapp.models import *

class AlphaLookup(LookupChannel):

model = Alpha

def get_query(self,q,request):
# The real query
# Here the filter will select only non-submitted entries
return Alpha.objects.filter(Q(name__icontains = q) & Q(submitted = false)).order_by('name')

def get_result(self,obj):
u""" result is the simple text that is the completion of what the person typed """
return obj.name

def format_match(self,obj):
""" (HTML) formatted item for display in the dropdown """
return escape(obj.name)

def format_item_display(self,obj):
""" (HTML) formatted item for displaying item in the selected deck area """
return escape(obj.name)

请注意,应始终使用 format_matchformat_item_display 中的 escape() 函数对原始字符串进行转义。

就您而言,关键的是 get_query 方法。应用于 Alpha.objects 的过滤器仅选择未提交的条目。

不要忘记更新您的settings.py以使用查找类而不是默认行为:

AJAX_LOOKUP_CHANNELS = {
'alpha' : ('yoursite.yourapp.lookups', 'AlphaLookup'),
}

关于python - 在 django ajax_lookup 中配置 ajax 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13399000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com