2017-07-29 65 views
2

我试图获取将要上传的图像的混乱名称并将其发送到视图。在视图中,我知道如何获取图像的真实姓名,但是如何从模型中获取混乱的名称?如何从模型获取图像文件名称的视图django

我在这个方向尝试,如果有人知道我希望你能告诉我,我怎么去正确的方向:

opts = UploadImage._meta 
    print ([f.name for f in opts.fields]) 
    print ([(field.name, getattr(UploadImage,field.name)) for field in UploadImage._meta.fields]) 
    print (UploadImage._meta.get_field('image')) 
    print([f.name for f in opts.many_to_many]) 

models.py

from django.db import models 
import uuid 

def scramble_uploaded_filename(instance, filename): 
    extension = filename.split(".")[-1] 
    return "{}.{}".format(uuid.uuid4(), extension) 

def filename(instance, filename): 
    return filename 

# Create your models here. 
class UploadImage(models.Model): 
# print (scramble_uploaded_filename) 
    image = models.ImageField("Uploaded image",upload_to=scramble_uploaded_filename) 
    img_type = models.IntegerField("Image type") 
    created = models.DateTimeField(auto_now_add=True) 
    user = models.CharField(default='1',max_length= 100,editable=False) 

views.py

import sys,os 
sys.path.append(os.path.join(os.path.dirname(__file__), '..')) 
from rest_framework import viewsets 
from api.models import UploadImage 
from api.serializers import UploadedImageSerializer 
from rest_framework import authentication, permissions 
from rest_framework.parsers import MultiPartParser,FormParser 
import MySQLdb 


class FileUploadViewSet(viewsets.ModelViewSet): 
    #create queryset view 
    permission_classes = (permissions.IsAuthenticated,) 
    queryset = UploadImage.objects.filter(id=1,user='auth.User') 
    serializer_class = UploadedImageSerializer 
    parser_classes = (MultiPartParser, FormParser,) 

    #after post action get this 
    def perform_create(self, serializer): 
     #grab request 
     image_name = self.request.data['image'] 
     username = self.request.user 
     #grab scrambled filename 

回答

1

image proc如果这就是你要求的理由,应该在模型中进行评估。 同样在fillen功能里,你可以找到你的图像的名字。

一下添加到model.py

# Create your models here. 

class UploadImage(models.Model): 
# print (scramble_uploaded_filename) 
    image = models.ImageField("Uploaded image",upload_to=scramble_uploaded_filename) 
    img_type = models.IntegerField("Image type") 
    created = models.DateTimeField(auto_now_add=True) 
    user = models.CharField(default='1',max_length= 100,editable=False) 
    def filen(self): 
     path = self.image.path 
     print('image path',path) 
     tip = self.captcha_type 
     text = **here is your function that returns result of image process** 
     return text 
    result = filen