因此,我有一个名为partner的模型,其中有一个名字。该名称具有一个指向自身的外键。因此,当我创建第二个合作伙伴时,我可以看到我创建的先前名称的列表。那些是潜在的父母。我想过滤父母,以便用户仅能看到父母的名字不是全部,或者我想创建一个自动填充功能来帮助用户输入。
class Partner(TimeStampedModel, StatusModel):
INVOICE_METHOD_CHOICE = (
("PAPER", "Paper"),
('EMAIL', 'Email'),
)
LEGAL_STRUCTURE_CHOICES = (
('CORPORATION', 'Corporation'),
('LLC', 'LLC'),
('SOLE PROPRIETOR', 'Sole Proprietor'),
('PARTNERSHIP', 'Partnership'),
)
PARTNER_OFFICE_CHOICES = (
('HEADQUARTERS', 'Headquarters'),
('DIVISION', 'Division Office'),
('SITE', 'Site'),
('DC', 'Distribution Center'),
)
ADDRESS_TYPES = (
('Billing', 'Billing'),
('Shipping', 'Shipping'),
('Physical', 'Physical'),
)
STATUS = Choices('Active', 'Inactive', 'Credit Hold',)
name = models.CharField(blank=True, max_length=100,
verbose_name='Account Name', )
parent = models.ForeignKey(
'self',
blank=True,
help_text="Parent Company name (if necessary)",
null=True,
on_delete=models.CASCADE,
max_length=200
)
在表单字段中有哪些好的自动完成库?还有关于如何实现它的任何好的教程吗?我尝试了django自动完成功能,但似乎只能让它在admin上工作,而在其他任何地方都不能。
答案 0 :(得分:0)
解决此问题的最佳方法是自己编写。这很容易做到,通常称为预输入。
您在输入搜索框上添加了事件侦听器(“更改”)。每次发生更改时,抓住它们键入的内容,向您的服务器发出AJAX调用,返回所有可能应用的匹配值,并在输入中将其显示为灰色(建议)或包含所有潜在值的下拉列表。
您可能会发现您正在调用过多的数据库。为此,您可能需要等待三个字符来等待第一个请求,或者只是在键入文本后等待几秒钟,以减慢键入速度,而不是触发AJAX调用(类似于Amazon)。