【问题标题】:How to show only user uploads django如何仅显示用户上传的django
【发布时间】:2014-06-27 18:19:15
【问题描述】:

如何只显示他们上传的用户文件(不是全部)我使用 python 2.7 和 django 1.7 和 django allauth。下面是我的模型。如果有人能指出正确的方向,谢谢。

模型.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)

【问题讨论】:

  • 将外键存储给在您的文件模型上上传文件的人将是一个好的开始..

标签: python django python-2.7 django-authentication django-allauth


【解决方案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()
    

    在处理文件上传的函数中

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 2016-09-07
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      相关资源
      最近更新 更多