标签: imagefield

以编程方式保存 ImageField 会复制图像文件

我正在Item从 csv 文件创建如下所示模型的一些实例。在 csv 文件中,仅指定项目的name和。filename通过查看图像是否存在来设置该image字段,如果存在,则将图像文件设置为image

我愿意:

item = Item()
item.name = csv_fields[0]
item.filename = csv_fields[1]
item.save()

...

f = open(settings.MEDIA_ROOT+"images/"+item.filename, 'r')
item.image = File(f)
item.save()
Run Code Online (Sandbox Code Playgroud)

这样做,图像将被复制为settings.MEDIA_ROOT+"images/"as <original filename>_1。如何避免呢?即如何将现有文件设置为图像字段而不复制它?

class Item(models.Model):   

    name = models.CharField(max_length=50)
    filename = models.CharField(max_length=100,)
    image = models.ImageField(upload_to='images', blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

django imagefield

5
推荐指数
1
解决办法
1698
查看次数

存储django模型中的图像列表

我正在构建一个Django数据模型,我希望能够存储一个ImageFields数组.有可能的?

mainimage = models.ImageField(upload_to='img', null = True)
images = models.??
Run Code Online (Sandbox Code Playgroud)

谢谢.

python arrays django model imagefield

5
推荐指数
1
解决办法
4470
查看次数

在Django中显示图像

我有一个django应用程序,允许用户使用它提交图像.现在我的模型看起来像

class Posting(models.Model):
    title = models.CharField(max_length=150)
    images = models.ForeignKey(Image, null=True)

class Image(models.Model):
    img = models.ImageField(upload_to="photos/",null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

我试图在我的模板中显示图像,但我似乎无法让它工作.我已经走了无数堆叠溢出的帖子,并没有任何运气.在我的模板中,我有

{ for post in postings }
    <img src"{{ post.image.url }} #and many variations of this
Run Code Online (Sandbox Code Playgroud)

然而其他似乎显示网址.网址似乎总是空白.任何帮助将不胜感激!

django image imagefield

5
推荐指数
2
解决办法
2万
查看次数

Django 更新视图集

目前我正在开发一个图片库 django 项目。用户可以上传图像,然后将“结果”上传到每个图像。我知道我必须覆盖 update(...) 函数,但我想我需要 Base64ImageFiled 的帮助。

一步步:

  1. 用户上传图片(结果 = null)
  2. 图像存储在云中
  3. 用户将结果上传到指定的图像(在此处需要帮助)

这是我目前的结构:

class Image(models.Model):
  project = models.ForeignKey(Project)
  image = models.ImageField(upload_to='images')
  result = models.ImageField(upload_to='results')

class ImageSerializer(serializers.ModelSerializer):
  project = ProjectSerializer(read_only=True, required=False)
  image = Base64ImageField(max_length=None, use_url=False)
  result = Base64ImageField(max_length=None, use_url=False, required=False)

class ProjectImagesViewSet(viewsets.ViewSet):
  queryset = Image.objects.select_related('project').all()
  serializer_class = ImageSerializer

  def list(self, request, project_pk=None):
    queryset = self.queryset.filter( project__name = project_pk)
    serializer = self.serializer_class(queryset, many=True)
    return Response(serializer.data)

  def update(self, request, pk=None, project_pk=None):
    print(request.data['result'])
    ???
Run Code Online (Sandbox Code Playgroud)

django django-models imagefield django-rest-framework

5
推荐指数
1
解决办法
2万
查看次数

将BytesIO保存到Django ImageField

我有一个网络抓取工具,我想下载要抓取的页面的图像并将其保存为Django模型中的“截屏” ImageField。我正在使用此代码:

def save_screenshot(source,screenshot):
    box = (0, 0, 1200, 600)
    im = Image.open(io.BytesIO(screenshot))
    region = im.crop(box)
    tempfile_io = io.BytesIO()
    region.save(tempfile_io, 'JPEG', optimize=True, quality=70)
    source.screenshot.save(source.slug_name+"-screenshot",ContentFile(tempfile_io.getvalue()),save=True)
Run Code Online (Sandbox Code Playgroud)

它将屏幕截图保存到/ media / news_source_screenshots /目录,但不将其保存到模型。模型字段定义为:

screenshot = models.ImageField(upload_to='news_source_screenshots',blank=True,null=True)
Run Code Online (Sandbox Code Playgroud)

我想念什么?

python django screenshot django-models imagefield

5
推荐指数
1
解决办法
1782
查看次数

django.db.utils.IntegrityError:NOT NULL约束失败:products_product.image图像字段错误

我想向我添加imagefield models.py并上传到我的media_cdn目录中,但是当我迁移到基于model.py的基础上时,他给出了此错误

django.db.utils.IntegrityError: NOT NULL constraint failed: products_product.image ERROR WITH IMAGE FIELD
Run Code Online (Sandbox Code Playgroud)

从cmd输出

operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
Run Code Online (Sandbox Code Playgroud)

文件“ C:\ Users \ PANDEMIC \ Desktop \ td10 \ lib \ site-packages \ django \ db \ migrations \ operations \ fields.py”,行84,位于database_forwards字段中,文件“ C:\ Users \ PANDEMIC \ Desktop \ td10 \ lib \ site-packages \ django \ db \ backends \ sqlite3 \ schema.py”,第231行,位于add_field self._remake_table(model,create_fields = [field])文件“ C:\ Users \ PANDEMIC \ Desktop \ td10 \ lib \ site-packages \ django …

python sqlite django django-models imagefield

5
推荐指数
6
解决办法
2万
查看次数

Django 使用 models.ImageField 将 Base64 字符串保存到文件系统

我正在尝试使用 python django 将图像上传到文件系统。我不知道如何进一步进行。

在我的 model.py 中:

Class Test(object):
    mission = models.TextField(blank=True)
    image = models.ImageField(upload_to='documents/images/',blank=True)
    account = models.OneToOneField(Account, related_name='account')
Run Code Online (Sandbox Code Playgroud)

在我看来.py

def add_image(request, account):
    req = get_request_json(request)
    data = Test.objects.add_image(account, req)
Run Code Online (Sandbox Code Playgroud)

在我的经理.py

Class TestManager(models.Manager):
    def add_image(self, account, input):
        acc = self.get(account=account)
        acc.save()

        return acc;
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从这里继续。

我想知道如何将base64图像字符串保存到指定位置并将路径/文件名存储到数据库中?

我使用 python 将文件写入目录并获取路径并存储在数据库中。这里我想使用 django 选项。

我也必须对其他文件格式重复相同的过程。

python django image imagefield

5
推荐指数
1
解决办法
5352
查看次数

使用 update() 方法时,Django ImageField 不会更新

我正在从 views.py 文件更新模型中的一些字段。当我使用时,所有其他字段都会正确更新

Profile.objects.filter(id=user_profile.id).update(
        bio=bio,
        city=city,
        date_of_birth=dob,
        profile_pic=profile_pic,
        gender=gender
    )
Run Code Online (Sandbox Code Playgroud)

只是,profile_pic = models.ImageField(blank=True)没有更新,奇怪的是,当我Profile从 admins.py检查我的模型时,它显示了我上传的文件名,但我的文件没有显示在我的/media目录中(我上传所有图像的地方)

视图.py

def edit_submit(request):
if request.method == 'POST':
    profile_pic = request.POST.get('profile_pic')
    bio = request.POST.get('bio')
    city = request.POST.get('city')
    dob = request.POST.get('dob')
    gender = request.POST.get('gender')
    user_profile = Profile.objects.get(user=request.user)
    Profile.objects.filter(id=user_profile.id).update(
        bio=bio,
        city=city,
        date_of_birth=dob,
        profile_pic=profile_pic,
        gender=gender
    )
    return HttpResponseRedirect(reverse('profile', args=[user_profile.id]))
Run Code Online (Sandbox Code Playgroud)

这就是我在 settings.py 中管理媒体文件的方式

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

我认为只有文本存储在 ImageField 中,图像没有上传到/media目录 注意:我<input type="file" name="profile_pic" class="change_user_img">用于从模板获取图像

python django imagefield

5
推荐指数
1
解决办法
2692
查看次数

django:ImageField,MEDIA_ROOT,MEDIA_URL,如何正确设置

应该怎样MEDIA_ROOTMEDIA_URL被在上下文中正确设置ImageField?我应该如何设置upload_toImageField的参数?评论MEDIA_ROOTMEDIA_URL稀缺,所以我想知道,他们使用了什么以及如何正确设置它们.

django imagefield media-url

4
推荐指数
1
解决办法
3827
查看次数

Django FileField存储选项

我有这个型号:

class UserProfile(models.Model):
    #..........
    photo = models.ImageField(upload_to = get_upload_file_name,
                              storage = OverwriteStorage(),
                              blank = True, null = True,
                              height_field = 'photo_height',
                              width_field = 'photo_width')
Run Code Online (Sandbox Code Playgroud)

这是我的存储功能:

class OverwriteStorage(FileSystemStorage):
    def _save(self, name, content):
        self.delete(r'.*')
        return super(OverwriteStorage, self)._save(name, content)

    def get_available_name(self, name):
        return name
Run Code Online (Sandbox Code Playgroud)

我该怎么做以下两件事:

  1. 每当用户上传文件(即图像)时,我想删除旧文件,无论名称是否相同.我试图删除任何与上述正则表达式匹配的内容,但这不起作用.

  2. 如果用户上传名为"me.jpg"的图像,我想以不同的方式重命名,具体取决于用户的用户名.所以我会做一些像这样做的事情return super(OverwriteStorage, self)._save(SOMETHING_ELSE_HERE, content)?我可以将其他参数传递给OverwriteStorage函数吗?

还有第三个问题:我为这个表单创建了一个ModelForm.因此用户可以上传图像.因此,当有人按下"选择文件"时,会弹出一个窗口窗口以浏览和选择照片.我怎么才能在这里显示某些文件?(例如,只有.jpg和.jpeg文件)

谢谢!

编辑:get_upload_file_name功能

def get_upload_file_name(instance, filename):
    return "%s/%s/profile_photo/%s" % (instance.user.username[0].lower(), instance.user.username, filename)
Run Code Online (Sandbox Code Playgroud)

编辑2:我已经包含了我的models.py

import datetime
import os
import urllib2, urlparse
import re

from django.db import models
from …
Run Code Online (Sandbox Code Playgroud)

python django django-models filefield imagefield

4
推荐指数
1
解决办法
5764
查看次数