0

我喜欢澄清我是 Django 的新手。

Versions:
Django 1.5
Python 2.7
PostgreSQL 9.3

我有一个将文件上传到 AWS S3 的 webapp,目前可以使用。我想将文件命名为contentid在上传时自动分配 V4 UUID 的字段的名称。我会尝试挑选相关信息并在此处发布。我不确定我会在哪里收集这些信息并将其声明为名称。

看法

def upload_content(request):
if request.method == 'POST':
    form = ContentForm(request.POST, request.FILES)
    if form.is_valid():
        new_content = Content(name=request.POST['name'],accountid=request.user.id,public=False,url=request.POST['name'],uploaddate=datetime.now(),viewcount='0',file = request.FILES['file'])
        new_content.save()

        return HttpResponseRedirect('/Console/Content/')

模型

class Content(models.Model):
    name = models.CharField(max_length=128)
    accountid = models.IntegerField(max_length=34)
    url = models.CharField(max_length=200)
    uploaddate = models.DateTimeField('date published')
    viewcount = models.IntegerField(max_length=34)
    public = models.BooleanField(max_length=1)
    contentid = UUIDField(unique=True,editable=False)
    file = models.FileField(upload_to='content')

@classmethod
def get_content_list(cls, account):
    cursor = connection.cursor()
    cursor.execute('SELECT name, contentid, public, uploaddate, id FROM webapp_content WHERE accountid=%s ORDER BY uploaddate', [account])
    ret = cursor.fetchall()

    return ret
4

1 回答 1

0

所以我有一些答案,但我仍然有一个问题

模型:

def generate_new_filename(instance, filename):
   ext = filename.split('.')[-1]
   filename = '{}.{}'.format(uuid.uuid4().hex, ext)
   return (filename)

class Content(models.Model):
   file = models.FileField(upload_to=generate_new_filename)

看法:

仍然和上面一样,我如何在保存时将新生成的文件名写入我的 sqlrequest.FILES['file']

结果:

文件获取写入了正确的变量,网址没有

于 2014-01-04T20:48:32.887 回答