2014-09-03 15 views
5

Người dùng đang tải lên một tệp .c của một câu hỏi cụ thể. Tôi muốn các tập tin được đổi tên là 'userid_questionid.c'Tải lên và đổi tên tệp Django

models.py của tôi là:

from django.db import models 

class users(models.Model): 
    username = models.CharField(max_length=20) 
    password = models.CharField(max_length=20) 
    score=models.IntegerField(max_length=3) 
    def __unicode__(self): 
     return self.username 

class questions(models.Model): 
    question = models.TextField(max_length=2000) 
    qid=models.IntegerField(max_length=2) 
    def __unicode__(self): 
     return self.qid 

def content_file_name(instance, filename): 
    return '/'.join(['uploads', instance.questid.qid, filename]) 


class submission(models.Model): 
    user = models.ForeignKey(users) 
    questid = models.ForeignKey(questions) 
    file = models.FileField(upload_to=content_file_name) 

Tôi cố gắng này. Nhưng nó chỉ tạo thư mục của người dùng và lưu tệp trong đó. Hãy giúp tôi. Cảm ơn bạn. Tôi cần tập tin được đổi tên.

+0

Dấu phân cách không phải lúc nào cũng là '/'. Tùy thuộc vào hệ điều hành, '.','> ',': 'và dấu gạch chéo ngược cũng có thể được sử dụng. – sgarza62

Trả lời

7

Bạn chỉ cần thay đổi chức năng content_file_name của mình. Hàm bên dưới sẽ tạo đường dẫn như vậy: uploads/42_100.c, trong đó 42 là id của người dùng và 100 là id của câu hỏi.

import os 
def content_file_name(instance, filename): 
    ext = filename.split('.')[-1] 
    filename = "%s_%s.%s" % (instance.user.id, instance.questid.id, ext) 
    return os.path.join('uploads', filename) 
+0

Nó hoạt động! Ngoài ra tôi đã phải thực hiện sửa đổi trong views.py và mẫu django liên kết với it.Thanks. –

+0

@JaineshPatel Vui mừng khi biết điều đó! Vui lòng đánh dấu câu trả lời là chính xác nếu câu hỏi được giải quyết – sgarza62

+0

Bây giờ tôi cần tệp có định dạng "submissionid_userid_questionid.c"! Tôi đã thử sử dụng "instance.code.id" nhưng nó không hoạt động. Tôi cũng đã thử "instance.id" nhưng nó cũng không hoạt động. Hãy chăm sóc nó. –

Các vấn đề liên quan