Python 使用日期和用户django保存文件

Python 使用日期和用户django保存文件,python,django,forms,Python,Django,Forms,我正在制作一个上传页面,我想要一个模型,它将保存一个指向上传文件、日期和用户的链接。 我是django的新手,对表单和模型之间的关系以及如何传递数据感到困惑 我想制作一个1字段表单,它将是FileField和catch request.user和time on the go,然后将它们保存在数据库中 这是我目前的代码: forms.py class UploadForm(forms.Form): def __init__(self, *args, **kwargs):

我正在制作一个上传页面,我想要一个模型,它将保存一个指向上传文件、日期和用户的链接。 我是django的新手,对表单和模型之间的关系以及如何传递数据感到困惑

我想制作一个1字段表单,它将是FileField和catch request.user和time on the go,然后将它们保存在数据库中 这是我目前的代码:

forms.py

class UploadForm(forms.Form):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    docfile=forms.FileField(label="Select a file")
@login_required
def upload(request):

    if request.method == "POST":

        form=UploadForm(request.POST, request.FILES, user=request.user)

        if form.is_valid():
            #this is what i used to save the only the file
            #now i want to have file,user and upload date in db
            new_doc = Document(docfile=request.FILES['docfile'])
            new_doc.save()

            print(request.user)
            **???**-what do i insert here to pass user and time
            to the model and save it **???**


            return HttpResponseRedirect(reverse('after_upload'))

    else:


        form=UploadForm()

    return render(request, 'upload.html', {'form':form})
class Document(models.Model):


    upload_user=**???**
    upload_time=**???**

    docfile=models.FileField(upload_to='documents/%Y/%m')
from django.contrib.auth.models import User

class Document(models.Model):
    upload_user = models.ForeignKey(User, related_name='documents')
    upload_time = models.DateTimeField(auto_now_add=True)
    docfile  =models.FileField(upload_to='documents/%Y/%m')
class UploadForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Document
        fields = ('docfile',)
if form.is_valid():
    doc = form.save(commit=False)
    doc.upload_user = request.user
    doc.save()
    return HttpResponseRedirect(reverse('after_upload'))
视图.py

class UploadForm(forms.Form):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    docfile=forms.FileField(label="Select a file")
@login_required
def upload(request):

    if request.method == "POST":

        form=UploadForm(request.POST, request.FILES, user=request.user)

        if form.is_valid():
            #this is what i used to save the only the file
            #now i want to have file,user and upload date in db
            new_doc = Document(docfile=request.FILES['docfile'])
            new_doc.save()

            print(request.user)
            **???**-what do i insert here to pass user and time
            to the model and save it **???**


            return HttpResponseRedirect(reverse('after_upload'))

    else:


        form=UploadForm()

    return render(request, 'upload.html', {'form':form})
class Document(models.Model):


    upload_user=**???**
    upload_time=**???**

    docfile=models.FileField(upload_to='documents/%Y/%m')
from django.contrib.auth.models import User

class Document(models.Model):
    upload_user = models.ForeignKey(User, related_name='documents')
    upload_time = models.DateTimeField(auto_now_add=True)
    docfile  =models.FileField(upload_to='documents/%Y/%m')
class UploadForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Document
        fields = ('docfile',)
if form.is_valid():
    doc = form.save(commit=False)
    doc.upload_user = request.user
    doc.save()
    return HttpResponseRedirect(reverse('after_upload'))
型号.py

class UploadForm(forms.Form):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    docfile=forms.FileField(label="Select a file")
@login_required
def upload(request):

    if request.method == "POST":

        form=UploadForm(request.POST, request.FILES, user=request.user)

        if form.is_valid():
            #this is what i used to save the only the file
            #now i want to have file,user and upload date in db
            new_doc = Document(docfile=request.FILES['docfile'])
            new_doc.save()

            print(request.user)
            **???**-what do i insert here to pass user and time
            to the model and save it **???**


            return HttpResponseRedirect(reverse('after_upload'))

    else:


        form=UploadForm()

    return render(request, 'upload.html', {'form':form})
class Document(models.Model):


    upload_user=**???**
    upload_time=**???**

    docfile=models.FileField(upload_to='documents/%Y/%m')
from django.contrib.auth.models import User

class Document(models.Model):
    upload_user = models.ForeignKey(User, related_name='documents')
    upload_time = models.DateTimeField(auto_now_add=True)
    docfile  =models.FileField(upload_to='documents/%Y/%m')
class UploadForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Document
        fields = ('docfile',)
if form.is_valid():
    doc = form.save(commit=False)
    doc.upload_user = request.user
    doc.save()
    return HttpResponseRedirect(reverse('after_upload'))

你可能需要这样做

型号.py

class UploadForm(forms.Form):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    docfile=forms.FileField(label="Select a file")
@login_required
def upload(request):

    if request.method == "POST":

        form=UploadForm(request.POST, request.FILES, user=request.user)

        if form.is_valid():
            #this is what i used to save the only the file
            #now i want to have file,user and upload date in db
            new_doc = Document(docfile=request.FILES['docfile'])
            new_doc.save()

            print(request.user)
            **???**-what do i insert here to pass user and time
            to the model and save it **???**


            return HttpResponseRedirect(reverse('after_upload'))

    else:


        form=UploadForm()

    return render(request, 'upload.html', {'form':form})
class Document(models.Model):


    upload_user=**???**
    upload_time=**???**

    docfile=models.FileField(upload_to='documents/%Y/%m')
from django.contrib.auth.models import User

class Document(models.Model):
    upload_user = models.ForeignKey(User, related_name='documents')
    upload_time = models.DateTimeField(auto_now_add=True)
    docfile  =models.FileField(upload_to='documents/%Y/%m')
class UploadForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Document
        fields = ('docfile',)
if form.is_valid():
    doc = form.save(commit=False)
    doc.upload_user = request.user
    doc.save()
    return HttpResponseRedirect(reverse('after_upload'))
forms.py

class UploadForm(forms.Form):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    docfile=forms.FileField(label="Select a file")
@login_required
def upload(request):

    if request.method == "POST":

        form=UploadForm(request.POST, request.FILES, user=request.user)

        if form.is_valid():
            #this is what i used to save the only the file
            #now i want to have file,user and upload date in db
            new_doc = Document(docfile=request.FILES['docfile'])
            new_doc.save()

            print(request.user)
            **???**-what do i insert here to pass user and time
            to the model and save it **???**


            return HttpResponseRedirect(reverse('after_upload'))

    else:


        form=UploadForm()

    return render(request, 'upload.html', {'form':form})
class Document(models.Model):


    upload_user=**???**
    upload_time=**???**

    docfile=models.FileField(upload_to='documents/%Y/%m')
from django.contrib.auth.models import User

class Document(models.Model):
    upload_user = models.ForeignKey(User, related_name='documents')
    upload_time = models.DateTimeField(auto_now_add=True)
    docfile  =models.FileField(upload_to='documents/%Y/%m')
class UploadForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Document
        fields = ('docfile',)
if form.is_valid():
    doc = form.save(commit=False)
    doc.upload_user = request.user
    doc.save()
    return HttpResponseRedirect(reverse('after_upload'))
视图.py

class UploadForm(forms.Form):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    docfile=forms.FileField(label="Select a file")
@login_required
def upload(request):

    if request.method == "POST":

        form=UploadForm(request.POST, request.FILES, user=request.user)

        if form.is_valid():
            #this is what i used to save the only the file
            #now i want to have file,user and upload date in db
            new_doc = Document(docfile=request.FILES['docfile'])
            new_doc.save()

            print(request.user)
            **???**-what do i insert here to pass user and time
            to the model and save it **???**


            return HttpResponseRedirect(reverse('after_upload'))

    else:


        form=UploadForm()

    return render(request, 'upload.html', {'form':form})
class Document(models.Model):


    upload_user=**???**
    upload_time=**???**

    docfile=models.FileField(upload_to='documents/%Y/%m')
from django.contrib.auth.models import User

class Document(models.Model):
    upload_user = models.ForeignKey(User, related_name='documents')
    upload_time = models.DateTimeField(auto_now_add=True)
    docfile  =models.FileField(upload_to='documents/%Y/%m')
class UploadForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user',None)
        super(UploadForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Document
        fields = ('docfile',)
if form.is_valid():
    doc = form.save(commit=False)
    doc.upload_user = request.user
    doc.save()
    return HttpResponseRedirect(reverse('after_upload'))