Как показывать только пользовательские загрузки django

#python #django #python-2.7 #django-authentication #django-allauth

#python #django #python-2.7 #django-аутентификация #django-allauth

Вопрос:

Как мне показать только пользовательские файлы, которые они загружают (не все) Я использую python 2.7 и django 1.7 с django allauth. Ниже приведена моя модель. Если кто-нибудь может указать мне правильное направление, спасибо.

models.py

 def hashed_uploads_dirs(instance, filename):
    return os.path.join(instance.md5, filename)

class File(models.Model):
    f = models.FileField(upload_to='.')
    md5 = models.CharField(max_length=32)
    created_at = models.DateTimeField(auto_now_add=True)
    def was_published_recently(self):
        return self.created_at >= timezone.now() - datetime.timedelta(days=1)
    was_published_recently.admin_order_field = 'created_at'
    was_published_recently.boolean = True
    was_published_recently.short_description = 'Published recently?'

    def __unicode__(self):
        return self.f.name

    @models.permalink
    def get_absolute_url(self):
        return ('file-add', )

def save(self, *args, **kwargs):
    self.slug = self.file.name
    super(File, self).save(*args, **kwargs)



def delete(self, *args, **kwargs):
    """delete -- Remove to leave file."""
    self.file.delete(False)
    super(File, self).delete(*args, **kwargs)
 

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

1. Хорошим началом было бы сохранение внешнего ключа для того, кто загрузил файл в вашей файловой модели..

Ответ №1:

Вам нужно изменить свой класс файла, чтобы сохранить внешний ключ для пользователя. Это должно выглядеть так

 ...
from django.contrib.auth.models import User
class File(models.Model):
    f = models.FileField(upload_to='.')
    md5 = models.CharField(max_length=32)
    created_at = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, related_name='uploaded_files')
...
 

Когда вы загружаете файл, вам также нужно будет указать пользователя перед сохранением файла. Затем, когда у вас есть экземпляр User, вы можете получить все загруженные файлы с помощью user.uploaded_files .

Ответ №2:

Создайте новое поле в файле: user = models.ForeignKey(User)

Затем вы можете сделать

 file.user = request.user
file.save()
 

в функции, которая обрабатывает загрузку файла