Отображение загрузки файлов Django в разных полях

#python #django

#питон #джанго

Вопрос:

Я создаю систему с помощью Django. У пользователя есть несколько клиентов. И у каждого клиента есть свое поле для загрузки файла. У меня есть функции загрузки, но они общие для всех. Я хочу, чтобы у каждого клиента были разные поля загрузки и отображения pdf. Как я могу это сделать?

models.py

 class Pdf(models.Model):

    comp_name = models.CharField(max_length=200, default='', blank=True, null=True)
    title = models.CharField(max_length=200)
    pdf = models.FileField(upload_to='pdfs/')
    type = models.CharField(max_length=200, default='Select')
    year = models.CharField(max_length=200, default='Select')

    def __str__(self):
        return self.title
 

views.py

 def pdf_list(request):
    pdfs = Pdf.objects.all()
    return render(request, 'pdf_list.html', {'pdfs': pdfs})


def upload_pdf(request):
    if request.method == 'POST':
        form = PdfForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('pdf_list')
    else:
        form = PdfForm()

    return render(request, 'upload_pdf.html', {'form': form})
 

forms.py

 class PdfForm(forms.ModelForm):
    CHOICES = [
        ('img', 'Image'),
        ('txt', 'Text'),
    ]

    type = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect)
    year = forms.fields.DateField(widget=forms.widgets.DateInput(attrs={'type': 'date'}))
    comp_name = forms.ModelChoiceField(queryset=CompanyProfile.objects.all(), required=False,
                                       widget=forms.HiddenInput())
 

customer/model.py

 class Customer(models.Model):
    name = models.CharField(max_length=20)
    surname = models.CharField(max_length=20)
    companyName = models.CharField(max_length=200, default="Choose")
 

Комментарии:

1. Я не уверен, что такое ваше «другое поле загрузки файла». каталог в вашей файловой системе ?

Ответ №1:

Вам нужно добавить поле FileField в вашу клиентскую модель (если разрешено несколько загрузок для каждого клиента, вам может понадобиться другая модель) и заполнить его соответствующим образом в вашем представлении