Django:使用 HTML 扩展管理更改表单中某个字段的正确方法?
假设我有一个带有基于 ImageField 类的字段的模型。
class Foo(models.Model):
imagefile = models.ImageField('File', upload_to='foo/%Y/%m%/%d/')
Django 在第一次上传后添加了一个文件类型的输入标签,让我可以更改它,并添加一个图像链接来查看它。
我想要这个原始的特定于字段的 (HTML) 代码按原样(并且绝不是自己手动创建它),但还添加其他 HTML/JS 代码,比如包含缩略图预览或添加一些 AJAX 内容。我也可以想象其他领域的一些其他用例。
实现类似功能的正确(例如:简单/不引人注目)方法是什么?
Let's say I have a model with a field based on the ImageField class.
class Foo(models.Model):
imagefile = models.ImageField('File', upload_to='foo/%Y/%m%/%d/')
Django adds - after first upload - an input tag of type file to let me change it and a link to the image to view it.
I want this original field specific (HTML) code as is (and by no means create it myself manually) but also add other HTML/JS code, say to include a thumbnail-preview or add some AJAX-stuff. I can image a few other use cases for other fields, too.
What's the correct (say: easy/unobtrusive) way to implement something like that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要编写一个自定义小部件。查看 django.forms.widgets 来获取现有
FileInput
小部件的代码,您可以在必要时对其进行子类化并重写render
方法。然后,您只需在管理表单中为文件字段分配该小部件即可。You need to write a custom widget. Look at
django.forms.widgets
for the code of the existingFileInput
widget, which you can subclass and override therender
method where necessary. You'll then just need to assign that widget for your file field in your admin form.