Django,重写ManyToManyField

发布于 2024-10-16 09:25:50 字数 534 浏览 3 评论 0原文

我正在基于 ManyToManyRawIdWidget 构建自己的小部件。

但是,一旦我在 ModelAdmin 中尝试以下操作:

formfield_overrides = {
    ManyToManyField: {'widget': ManyToManyRawIdWidget},
}

它会提示我

__init__() takes exactly 2 arguments (1 given)

,我认为我需要用一些东西填充 rel 参数,可能是关系模型(这是一个 Tag code> model)

但后来我遇到了 TemplateSyntaxError:

Caught AttributeError while rendering: type object 'Tag' has no attribute 'to'

这是我失去监督的地方。有人可以帮我吗?

I am sorta building my own widget, based on the ManyToManyRawIdWidget.

But as soon as i try the following in my ModelAdmin:

formfield_overrides = {
    ManyToManyField: {'widget': ManyToManyRawIdWidget},
}

It'll prompt me

__init__() takes exactly 2 arguments (1 given)

I figured i needed to fill the rel argument with something, probably the relation model (which is a Tag model)

But then i run into a TemplateSyntaxError:

Caught AttributeError while rendering: type object 'Tag' has no attribute 'to'

This is where I lose oversight. Could someone help me out?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尬尬 2024-10-23 09:25:50

只是想确保您注意到 formfield_overrides 的文档

警告

如果您想使用自定义小部件
带有关系字段(即外键
或 ManyToManyField),请确保
尚未包含该字段的名称
raw_id_fields 或 radio_fields。

formfield_overrides 不会让你
更改关系字段上的小部件
具有 raw_id_fields 或
radio_fields 设置。那是因为
raw_id_fields 和 radio_fields 意味着
自己的自定义小部件。

我不知道 ManyToManyRawIdWidget,但从它的名称来看,我认为在这种情况下可能会设置 raw_id_fields ?这可能就是它不起作用的原因。

Just want to make sure you heeded this warning in the documentation for formfield_overrides:

Warning

If you want to use a custom widget
with a relation field (i.e. ForeignKey
or ManyToManyField), make sure you
haven't included that field's name in
raw_id_fields or radio_fields.

formfield_overrides won't let you
change the widget on relation fields
that have raw_id_fields or
radio_fields set. That's because
raw_id_fields and radio_fields imply
custom widgets of their own.

I'm not aware of the ManyToManyRawIdWidget but judging by its name I assume that raw_id_fields might be set in this case? Which might be why it isn't working.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文