0

I've be struggling the last to days. I want the current user to be able to add a file without selecting himself the user of the file being uploaded. For now, I need to manually select a user from the list to add a file related to him.

Big thanks in advance!

Hugo

Here's models.py

from django.db import models
from django.contrib.auth.models import User

class Client(models.Model):
    user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
    name = models.CharField(max_length=100, null=True)


    def __str__(self):
        return self.name


class fichier4(models.Model):
    user = models.ForeignKey(Client, on_delete=models.CASCADE)
    file = models.FileField()
    date_created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.file

my view.py code

form3 = FichierUpload()
    
initial_data = {
    'user' : request.user
}  

    
if request.method == 'POST':      
    form3 = FichierUpload(request.POST or None, request.FILES, initial=initial_data)
        
    if form3.is_valid():
        form3.save()
        return redirect('allfiles')

forms.py

class FichierUpload(ModelForm):
    class Meta:
        model = fichier4
        fields = '__all__'
Hugo Prin
  • 31
  • 1
  • 3

1 Answers1

0

Don't add fields you don't want your users to fill in your form.

If you just want a file input, then make a form with just the file field and add the user later.

def my_view(request, **kwargs):
    form  = FichierUpload(request.POST or None, request.FILES)

    if request.method == 'POST':
        file = form.save(commit=False)
        file.user = request.user
        file.save()

        # return your response

    # display your template
Nicolas Appriou
  • 2,208
  • 19
  • 32