作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
A django-mptt TreeNodeChoiceField
提供缩进的选择选项,而我可以使用 django-autocomplete-light 过滤我的结果.但是,ModelSelect2
小部件会覆盖呈现的 html,从而删除缩进。
我想把两者结合起来。知道如何实现这一点吗?
模型.py:
class Foo(MPTTModel):
name = models.CharField(max_length=50)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)
class MPTTMeta:
order_insertion_by = ['name']
表单.py:
class FooForm(forms.ModelForm):
parent = TreeNodeChoiceField(queryset=Foo.objects.all(), widget=autocomplete.ModelSelect2(url='foo-autocomplete'))
class Meta:
model = Foo
fields = ('name', 'parent', )
最佳答案
我会在这里留下我的解决方案,以防有人试图实现相同的目标。
在深入研究 django-mptt 源代码和 django-autocomplete-light 示例后,我发现您可以覆盖选择选项的显示文本。另外,django-mptt 使用节点的级别来插入正确的缩进。我的模型和形式保持不变。我只需要重写自动完成 View 的 get_result_label()
方法:
from mptt.settings import DEFAULT_LEVEL_INDICATOR
class FooAutocomplete(autocomplete.Select2QuerySetView):
def get_result_label(self, item):
level_indicator = DEFAULT_LEVEL_INDICATOR * item.level
return level_indicator + ' ' + str(item)
def get_queryset(self):
qs = Foo.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
关于django - 将 django mptt TreeNodeChoiceField 与 django-autocomplete-light ModelSelect2 小部件相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46153557/
我是 RxSwift 的新手,我正在尝试用它来实现 UITableView。我使用 rx.items 成功实现了 UITableView 单元格,现在我需要使用 didSelect 方法。 我的问题是
我是一名优秀的程序员,十分优秀!