簡體   English   中英

每個用戶的 Django 文件上傳

[英]Django file upload per user

我正在嘗試創建一個表單來為每個用戶上傳文件,我需要設置文件 id 或其他東西的默認名稱。

例如,如果 2 個用戶將上傳具有相同名稱“sampleCV.pdf”的簡歷,我需要將它們放在單獨的文件中,通過 ID 或其他方式,我嘗試在上傳中使用 self.name,但它不起作用, 因為此時 self 仍未被識別..

是否有設置文件上傳名稱的默認方法?

模型

class Candidate(models.Model):
name = models.CharField(max_length=200, null=True)
...
candidate_cv = models.FileField(upload_to=f'uploads/',null=True)
...

形式:

class CandidateForm(ModelForm):
    class Meta:
        model = Candidate
        fields = '__all__'

看法:

@login_required(login_url='login')
def create_candidate(request):
    form = CandidateForm()
    if request.method == 'POST':
        form = CandidateForm(request.POST,request.FILES)
        if form.is_valid():
            form.save()
    context = {'form': form}

    return render(request, 'dashboard/form.html', context)

表單 HTML:

{% block content %}
    <center>
        <hr>
        <form enctype="multipart/form-data" action="" method="POST">
            {% csrf_token %}
            {{form.as_p}}
            <input class='btn btn-sm btn-danger' type="submit" name="Submit">
        </form>
        <hr>
    </center>
    {% endblock %}

找到了一個簡單的方法來做到這一點! 可能涉及的對象:

def create_candidate(request):
    form = CandidateForm()
    if request.method == 'POST':
        form = CandidateForm(request.POST, request.FILES)
        print(request.FILES['candidate_video'].name) # previous name
        request.FILES['candidate_video'].name = 'new_name.pdf' # setting a new file name
        print(request.FILES['candidate_video'].name) # new name
        if form.is_valid():
            form.save()
    context = {'form': form}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM