我正在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数据模型,我希望能够存储一个ImageFields数组.有可能的?
mainimage = models.ImageField(upload_to='img', null = True)
images = models.??
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个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 项目。用户可以上传图像,然后将“结果”上传到每个图像。我知道我必须覆盖 update(...) 函数,但我想我需要 Base64ImageFiled 的帮助。
一步步:
这是我目前的结构:
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模型中的“截屏” 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)
我想念什么?
我想向我添加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输出
Run Code Online (Sandbox Code Playgroud)operation.database_forwards(self.app_label, schema_editor, old_state, project_state)文件“ 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 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 选项。
我也必须对其他文件格式重复相同的过程。
我正在从 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">用于从模板获取图像
应该怎样MEDIA_ROOT和MEDIA_URL被在上下文中正确设置ImageField?我应该如何设置upload_toImageField的参数?评论MEDIA_ROOT和MEDIA_URL稀缺,所以我想知道,他们使用了什么以及如何正确设置它们.
我有这个型号:
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)
我该怎么做以下两件事:
每当用户上传文件(即图像)时,我想删除旧文件,无论名称是否相同.我试图删除任何与上述正则表达式匹配的内容,但这不起作用.
如果用户上传名为"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) django ×10
imagefield ×10
python ×6
image ×2
arrays ×1
filefield ×1
media-url ×1
model ×1
screenshot ×1
sqlite ×1