- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个带有可选头像的用户配置文件模型,看起来像
#models.py
class UserProfile(models.Model):
avatar = models.ImageField(upload_to=avatars null=True, blank=True)
.
.
.
然后像这样的表格:
#forms.py
class UserProfileForm(forms.ModelForm):
avatar = forms.ImageField(required=False,....)
class Meta:
model = UserProfile
最后,一个 View 包括
#views.py
def edit_profile(....)
profile_obj = request.user.userprofile
form = UserProfile(data=request.POST, files=request.FILES, instance=profile_obj)
if form.is_valid():
form.save()
现在,当呈现用于编辑用户个人资料和头像的模板时,它包含一个 Clear
复选框,选中后让用户删除他们的头像照片。它离开了myuser.avatar
在州<ImageFieldFile: None>
,但是它不会删除站点本身存储区域中的文件(即 jpg、png 或其他)。我在 Django 1.6
中读到这是设计使然,这一切都很好,但我如何覆盖此功能,以便文件确实被删除到?
从 shell 来看没有问题:
from myapp.models import UserProfile
user1==UserProfile.objects.all()[0]
user1.avatar.delete()
删除 jpeg
也是。
编辑:
我尝试使用如下信号:
#models.py
.
.
.
@receiver(post_delete, sender=UserProfile)
def avatar_post_delete_handler(sender, **kwargs):
print 'DEBUG: avatar delete triggered'
avatar = kwargs['instance']
storage, path = avatar.original_image.storage, avatar.original_image.path
storage.delete(path)
但这甚至没有触发,我猜是因为我没有删除 UserProfile
目的当用户选择清除复选框而不是仅选择头像时,完整显示。
最佳答案
像这样扩展 ImageField 并改为使用它:
class ImageField(models.ImageField):
def save_form_data(self, instance, data):
if data is not None:
file = getattr(instance, self.attname)
if file != data:
file.delete(save=False)
super(ImageField, self).save_form_data(instance, data)
如果您将旧文件替换为新文件,这将删除旧文件,或者将其标记为清除。 Here是为什么的解释。
编辑:
还有一个应用django-smartfields它包括此功能以及更多功能,例如自动调整大小、图像和视频的自动转换等。不过,它以更复杂的方式实现它,使用字段描述符和模型自定义。但是使用起来非常简单:
from smartfields import fields
class UserProfile(models.Model):
avatar = fields.ImageField(upload_to='avatars', blank=True)
它还会在以下情况下删除文件:
关于python - Django:如何在勾选清除复选框时自动从存储中删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22082052/
我正在构建一个自定义复选框,功能已经差不多了,但样式还有待改进。 我有几个问题, 我需要以圆为中心的支票 我只需要在单击复选框本身而不是文本时激活检查。 恐怕我无法在不使用左侧位置左侧的填充的情况下将
您好,我正在使用 Titanium 创建一个可以检查的行表。 我需要用 Javascript 编写一些代码,只允许检查一行,当检查其中一行时,其他行则取消检查。 我不担心 Titanium 部分,但更
我需要你的帮助。 如何从数组中获取值并使用 HTML 5 的 data 属性选中(勾选)其相关复选框? 即。 var x = "[monday,thursday]" ...经过一些处理后
我在 Winforms 应用程序中有一个 CheckedListBox,其中包含月份作为项目(如一月、二月、三月等)我正在尝试实现这样的功能,即当任何项目被选中时,应该弹出一条消息,说明它已被选中。而
我是一名 iOS 开发新手。我想在我的 UITableViewCell 被选中时添加一个复选标记。选择另一行时,应删除复选标记。我该怎么做? 最佳答案 不要使用 [tableview reloadDa
在我的应用程序中,有 2 个复选框用于获取用户的类型(例如:学生或教师)。我知道我应该使用单选按钮而不是复选框,但我在教程中的问题要求使用复选框(所以请暂时忽略单选按钮)。 即使我选中一个复选框,is
我的 html 页面上有一个表单,其中有一堆复选框作为选项。其中一个选项是“全选”,我希望在选中“全选”框后立即选中所有其他复选框(如果未选中)。我的代码看起来像这样: All Posts
我有一个 JSP,我在其中使用 c:out 打印一些字符串。但我需要通过反斜杠转义所有 '(刻度)。 示例:jsp '"> 打印 tag.title = test's 'test's 但我
我有一个复选框,然后是一个交叉图像,如下所示。 当我单击图像时,复选框应该被选中。我尝试了以下代码。但没有用。 任何人都可以帮助使用 Javascript 来完成它... 最佳答案 你可以使用jQu
我对使用 python 做一个编程游戏很感兴趣,并且我想以 GunTactyx ( http://apocalyx.sourceforge.net/guntactyx/index.php ) 的风格来
我正在使用 UltimateListCtrl 和 LC_LIST 样式。我的列表中的所有项目都带有复选框。填充列表后,我尝试根据从数据库收到的数据动态检查(勾选)一些项目。但在填充列表后,我无法检查(
这个问题在这里已经有了答案: .prop() vs .attr() (18 个答案) 关闭 9 年前。 我已经看过,但无法为我的问题找到简单的答案。我单击其中一个 TR,然后单击另一个 TR,它工作
我有这个 HTML 代码: 如何在 JavaScript 中检查(勾选)值“2”?我无法更改 html 代码,它是公共(public)网站。这是此 radio 的 XPath,值为“2” //*[
请考虑这段代码: plotOptions: { series: { label: { connectorAllowed: false }
我是一名优秀的程序员,十分优秀!