gpt4 book ai didi

python - 如何在管理中使用 Django-autocomplete-light 作为外键

转载 作者:行者123 更新时间:2023-12-01 03:19:51 24 4
gpt4 key购买 nike

我一直在努力向 django admin fk 字段添加自动完成功能,我遇到过这个第三方应用程序 Django-autocomplete-light,但它的文档对于像我这样的初学者来说非常令人困惑。

所以,我有我的模型,以及如何为 fk 字段添加自动完成功能。

Class Order(models.Models)
Client = models.ForeignKey(settings.AUTH_USER_MODEL)

最佳答案

您应该看看 documentation并尝试慢慢地阅读。如果您提供更多详细信息,了解哪些内容对您不起作用,也许我们可以提供更好的帮助。一般来说,这是需要的:

在您的views.py文件中添加

from django.contrib.auth.models import User
from dal import autocomplete
from your_countries_app.models import Country


class ClientAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
# Don't forget to filter out results depending on the visitor !
if not self.request.user.is_authenticated():
return User.objects.none()

qs = User.objects.all()

if self.q:
qs = qs.filter(name__istartswith=self.q)

return qs

然后在您的urls.py文件中添加:

from your_countries_app.views import ClientAutocomplete

urlpatterns = [
url(
r'^client-autocomplete/$',
ClientAutocomplete.as_view(),
name='client-autocomplete',
),
]

如果您感到困惑,让我们暂时跳过文档中带有 shell 的部分。所以现在您应该可以从浏览器访问此地址。

本地主机:8000/客户端自动完成/

您应该能够以文本形式看到所有用户(这种格式称为 JSON,如果您愿意,您可以查找它,但我们不会处理它)。如果您为订单创建了另一个应用程序,并且正在另一个文件夹中工作,只需尝试调用以订单为前缀的 URL:

本地主机:8000/orders/client-autocomplete/

Browser view

我想你应该熟悉 Django 中的表单,如果不熟悉 take a look here.在您的 forms.py 中添加以下内容:

from dal import autocomplete
from django.contrib.auth.models import
from django import forms


class OrderForm(forms.ModelForm):
client = forms.ModelChoiceField(
queryset=User.objects.all(),
widget=autocomplete.ModelSelect2(url='cllient-autocomplete')
# if you are working in an orders application, and you have defined the the url
#in the orders/urls.py then call this method like this:
#widget=autocomplete.ModelSelect2(url='orders:cllient-autocomplete')

)

class Meta:
model = Order
fields = ('__all__')

我想您希望自动完成功能在管理面板 View 之外工作,因此您必须在订单 View 的模板中添加以下代码。请注意,您应该在 base.html 中定义 {% block content %} 和 {% block footer %}:

{% extends 'base.html' %}
{# Don't forget that one ! #}
{% load static %}

{% block content %}

<div>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" />
</form>
</div>
{% endblock %}

{% block footer %}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>

{{ form.media }}
{% endblock %}

关于python - 如何在管理中使用 Django-autocomplete-light 作为外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42029950/

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