django-nonrel 从管理中排除列表字段
我遇到了一个典型的问题,模型中有一个 ListField 。
我想使用 Django 管理来处理该对象,而 ListField 并不是那么重要,它是一个我可以没有的嵌入对象的列表。
当我使用它时,我在主管理页面上收到错误。如果我在注册原始 Item 对象时不使用 ModelAdmin 对象,则只有在尝试添加 Item 时才会收到错误。
from django.contrib import admin
class ItemAdmin(admin.ModelAdmin):
exclude = ('bids',)
admin.site.register(Item, ItemAdmin)
那么如何正确排除“bids”ListField呢?
I've ran into a typical problem where I have a ListField in a model.
I'd like to use the Django admin to play around with the object and the ListField isn't that crucial, it's a list of embedded objects that I can live without.
When I use this, I get the error on the main admin page. If I don't use the ModelAdmin object when registering the original Item object, I only get the error if I try to add an Item.
from django.contrib import admin
class ItemAdmin(admin.ModelAdmin):
exclude = ('bids',)
admin.site.register(Item, ItemAdmin)
How to properly exclude the "bids" ListField then?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我通过使 ListField 不可编辑来解决这个问题,因为我也无法让
exclude
为我工作......例如:
I worked round it by making my ListField non editable, as I couldnt get
exclude
to work for me either..eg:
子类
ListField
并重写formfield
以便它返回None
。从
formfield(...)
返回None
意味着该字段应从所有表单中排除,因此您需要删除exclude = ['bids']< /code> 来自
ModelAdmin
的东西。或者,您可以使
formfield(...)
返回适当的forms.Field
子类 - 要显示文本版本,请使用类似的内容将其从管理中排除,您仍然可以使用
排除
。https://docs. djangoproject.com/en/dev/howto/custom-model-fields/#django.db.models.Field.formfield
将您的字段子类放入
yourapp/fields.py
中。Subclass
ListField
and overrideformfield
so that it returnsNone
.Returning
None
fromformfield(...)
means that the field should be excluded from all forms, so you need remove theexclude = ['bids']
thing from yourModelAdmin
.Alternatively, you can make
formfield(...)
return a properforms.Field
subclass -- to display e.g. a text version, use something likeTo exclude it from the admin, you can still use
exclude
.https://docs.djangoproject.com/en/dev/howto/custom-model-fields/#django.db.models.Field.formfield
Put your field subclass into
yourapp/fields.py
.