gpt4 book ai didi

python - 如何在 Django 管理页面中添加多个自动完成

转载 作者:行者123 更新时间:2023-11-28 20:57:42 24 4
gpt4 key购买 nike

我正在使用内置函数为许多字段构建自动完成功能: https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.autocomplete_fields

我有以下模型:

 class Ipaddress(models.Model):
ipaddress=models.CharField(max_length=20)
slug = models.SlugField(unique=True)
machinename=models.CharField(max_length=500)
user=models.CharField(max_length=200)
department= models.ForeignKey('Department',on_delete=models.CASCADE,default='Empty')
location= models.ForeignKey('Location', on_delete=models.CASCADE)
updated = models.DateField("Date Updated",null=True)
note =models.TextField()

def __str__(self):
return self.ipaddress[:50]

class Department(models.Model):
name= models.CharField(max_length=100, unique=True)
def __str__(self):
return self.name[:50]

class Location(models.Model):
description= models.CharField(max_length=100, unique=True)
def __str__(self):
return self.description[:50]

管理页面在这里:

from django.contrib import admin
from pages.models import Ipaddress, DeviceGroup, Location,Department,
from django_admin_listfilter_dropdown.filters import DropdownFilter, RelatedDropdownFilter

class IpaddressAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('ipaddress',)}

search_fields = ['ipaddress']
autocomplete_fields = ['department',]

list_display = ('ipaddress', 'machinename', 'user', 'department','location','updated',)
list_filter = (
('user', DropdownFilter),
('department', RelatedDropdownFilter),
('location', RelatedDropdownFilter),

)

如果我更改 autocomplete_fields = ['location',] 它可以工作,但是当我尝试更改它的部门时它不起作用。我还想同时为部门和位置自动完成。

我看到的错误是当我设置 autocomplete_fields = ['department',]

ERRORS:<class 'pages.admin.IpaddressAdmin'>: (admin.E040) ModelAdmin must define    
"search_fields", because it's referenced by
IpaddressAdmin.autocomplete_fields.

知道如何解决这个错误我想要这样的东西:

 autocomplete_fields = ['department', 'location','user',]

最佳答案

根据您在链接中引用的文档 here

You must define search_fields on the related object’s ModelAdmin because the autocomplete search uses it.

这意味着,在您的情况下以及您收到的错误中,您需要在相关对象上定义 search_fields(在您的情况下为 DepartmentLocation ModelAdmin 类,因为自动完成搜索使用它)。

所以,它会是这样的。

class DepartmentAdmin(admin.ModelAdmin):
search_fields = ['name']

class LocationAdmin(admin.ModelAdmin):
search_fields = ['description']

IPAddressAdmin 上的autocomplete_fields 可以是这样的。

 autocomplete_fields = ['department', 'location',]

关于python - 如何在 Django 管理页面中添加多个自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52471361/

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