前奏:
这是显示 ImageField 的最简单方法。假设我的表单中有 10 个字段,我不想遍历所有字段template.html
以检查它是否是 imageField 并以不同的方式显示它。我想通过表单或小部件或类似的东西来处理它。所以我想要离开 template.html,如下所示。
模板.html
<table>
{{ form.as_table }}
</table>
并在models.py 中添加一个image_tag
方法:
class UserProfile(Model):
photo = ImageField(upload_to=PHOTO_DIRECTORY)
contacts = TextField(null=True)
... others
def image_tag(self):
return u'<img src="%s" />' % self.photo.url
image_tag.short_description = 'Image'
image_tag.allow_tags = True
表格.py:
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('contacts', 'photo', 'image_tag', ...others)
我得到一个Unknown field(s) (image_tag) specified for UserProfile
公平的错误。
我也尝试将其放入,readonly_fields
但它们无法以某种方式显示。我必须创建list_view吗?如果是,应该在哪里?
我在这里想念什么?为什么image_tag
方法应该是模型的一部分而不是形式?模型描述了数据应该如何保存在数据库中,而不是它应该如何通过表单呈现给用户。这应该是表单的一部分,不是吗?如果我错了,请纠正我。我该如何解决这个问题?任何帮助将不胜感激!