哪些Django库对自动完成有用?

时间:2019-07-18 20:22:14

标签: django autocomplete

因此,我有一个名为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上工作,而在其他任何地方都不能。

1 个答案:

答案 0 :(得分:0)

解决此问题的最佳方法是自己编写。这很容易做到,通常称为预输入。

您在输入搜索框上添加了事件侦听器(“更改”)。每次发生更改时,抓住它们键入的内容,向您的服务器发出AJAX调用,返回所有可能应用的匹配值,并在输入中将其显示为灰色(建议)或包含所有潜在值的下拉列表。

您可能会发现您正在调用过多的数据库。为此,您可能需要等待三个字符来等待第一个请求,或者只是在键入文本后等待几秒钟,以减慢键入速度,而不是触发AJAX调用(类似于Amazon)。