autocomplete-light用于在管理员外添加弹出窗口

时间:2015-03-28 03:54:15

标签: django-forms django-crispy-forms django-autocomplete-light

我使用django-crispy-forms并且想要使用自动完成灯但是无法使用它。我需要用户能够创建一个新设施,如果他们想要的设施不存在。 我只是不知道如何使用自动完成灯,而且我已经挣扎了好几天。有人可以指出我正确的方向吗?

models.py

class CollectionFacility(TimeStampedModel):
    """
    Data collection facility.
    """

    facility_name = models.CharField(max_length=256, blank=False)
    address_line1 = models.CharField("Address line 1", max_length=45)
    address_line2 = models.CharField("Address line 2", max_length=45, blank=True)
    country = models.CharField(max_length=50, blank=False)
    state_province = models.CharField(max_length=100, blank=True)
    city = models.CharField(max_length=100, blank=False)
    postal_code = models.CharField("Postal Code", max_length=20, blank=True)
    facility_contact = models.ForeignKey('FacilityContact', related_name='collection_facilities', null=True, blank=True)

    def __unicode__(self):
        return "%s, %s" %  (self.facility_name, self.country)

    class Meta:
        ordering = ['country', 'facility_name', 'city', 'state_province']
        verbose_name = "Collection Facility"
        verbose_name_plural = "Collection Facilities"

class FacilityContact(TimeStampedModel):
    TITLES = (
        ('Mrs.', 'Mrs.'),
        ('Ms.', 'Ms.'),
        ('Mr.', 'Mr.'),
        ('Dr.', 'Dr.'),
    )

    first_name = models.CharField(max_length=256, blank=False)
    middle_initial = models.CharField(max_length=4, blank=True)
    last_name = models.CharField(max_length=256, blank=False)
    title = models.CharField(max_length=4, choices=TITLES, blank=True)
    email = models.EmailField(blank=False)

    def __unicode__(self):
        return "%s, %s" %  (self.last_name, self.first_name)

    class Meta:
        ordering = ['last_name', 'first_name']
        verbose_name = "Facility Contact"
        verbose_name_plural = "Facility Contacts" 

forms.py

class FacilityForm(autocomplete_light.ModelForm):
    class Meta:
        model = CollectionFacility

views.py

facility_form = FacilityForm()
# pass it in the context to template
....

template.html

{% crispy facility_form %}

1 个答案:

答案 0 :(得分:0)

您检查了non_admin_add_another example app吗?

Docs about that one 尚未移植到v2 ,这意味着文档中的代码可能无效。 然而请注意autocomplete_light.example_apps.non_admin_add_another应该有效。

我建议您直接在autocomplete_light的test_project中开始摆弄该示例,请参阅:http://django-autocomplete-light.readthedocs.org/en/stable-2.x.x/demo.html

相关问题