Почему в этом примере uploaded_by, который равен (uploaded_by_id), передается в БД как NULL? - PullRequest
1 голос
/ 29 мая 2020

почему uploade_by_id не установлен на ID пользователя? хотите сопоставить загруженные файлы пользователю, который загружает.

models.py

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

class Profile(models.Model):
    CUSTOMER_TYPE = (
        ('Business', 'Business'),
        ('Personal', 'Personal'),
        )
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    customer_type = models.CharField(max_length=10,choices=CUSTOMER_TYPE)
    phone = models.CharField(max_length=10, blank=True)

    def __str__(self):
        return self.user.username

class Document(models.Model):
    uploaded_by = models.ForeignKey(User, on_delete=models.CASCADE)
    document_name = models.FileField()
    date_created = models.DateTimeField(auto_now_add=True)

1 Ответ

0 голосов
/ 29 мая 2020

Вы устанавливаете пользователя объекта в представлении. Модели не знают запросов. Таким образом, вы должны переписать представление на:

@login_required
def upload(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            <b>form.instance.uploaded_by = request.user</b>
            form.save()
            messages.success(request, 'File successfully uploaded')
            return redirect('profile')
    else:
        form = UploadFileForm()
    context = {'form': form}
    return render(request, 'users/upload.html', context)

В форме вы исключаете поле uploaded_by:

class UploadFileFOrm(forms.ModelForm):
    class Meta:
        model = Document
        exclude = ['uploaded_by']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...