首页 > 解决方案 > 对 ModelForm 中的同一字段使用 django-autocomplete-light 和 django-addanother

问题描述

我正在尝试为. _ModelForm

我尝试了以下方法:

import floppyforms.__future__ as forms
from .models import Worker
from dal import autocomplete
from organizations.models import Hub
from django.urls import reverse_lazy
from django_addanother.widgets import AddAnotherWidgetWrapper
from django.forms import MultiWidget


class WorkerCreateForm(forms.ModelForm):

    class Meta:
        model = Worker
        fields = ['display_name', 'hub', 'capacity', 'vehicle', ]
        widgets = {
            'hub': autocomplete.ModelSelect2(url='hubs-autocomplete', attrs{'data-html': True}),
            'hub': AddAnotherWidgetWrapper(
                forms.Select,
                reverse_lazy('create_hub'))
        }

这只会呈现AddAnotherWidgetWrapper明显的。

我尝试以多种方式使用 MultiWidget,每次遇到不同的错误(我不会发布我所有的试验和错误,因为它们中的大多数没有多大意义,但如果你认为我应该分享它们,我很乐意这样做)。由于没有明确的示例,我发现很难理解如何使用MultiWidget,而且我不确定它是否适合我的用例。

django-autocomplete-light 的文档中,他们建议使用django-addanother用于添加具有多个字段的模型,但没有说明如何实现它。

我猜django-addanotherSelect2下拉列表中填充新创建的模型可能并不容易,但如果我能够创建一个新模型然后让用户在选择字段中手动选择它,它将是对我来说够多的了。

我想知道是否有一种简单的方法可以一起使用这两个包,或者我是否应该编写自己的自定义代码以使两个包很好地协同工作。

任何帮助将不胜感激。

编辑:我最终将django-addanotherJavaScript 脚本手动放置在 HTML 模板中并且它起作用了。但是,我不确定这是否是最好的实现以及是否会导致任何安全问题。

标签: pythondjangodjango-autocomplete-light

解决方案


推荐阅读