django - Django:输出与特定用户关联的视频文件
问题描述
我有自定义用户模型名称 Profile 和 VideoFile 模型,其中包含与用户相关的字段。有许多用户帐户,每个用户都可以添加很多视频文件。我需要在 templates.html user.nickname 和他所有的视频文件中显示。
用户模型.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
nickname = models.CharField(max_length=30, blank=True, verbose_name="Никнэйм")
userpic = models.ImageField(upload_to='userpics/', blank=True, null=True)
视频文件.models.py
class VideoFile(models.Model):
name = models.CharField(max_length=200,blank=True)
file = models.FileField(upload_to="vstories/%Y/%m/%d", validators=[validate_file_extension])
date_upload = models.DateTimeField(auto_now_add = True, auto_now = False, blank=True, null = True)
descriptions = models.TextField(max_length=200)
reports = models.BooleanField(default=False)
vstories = models.ForeignKey(Profile, blank = True, null = True)
视图.py
def vstories (request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html", {'profiles':profiles})
模板.html
{% extends "base.html" %}
{% block content %}
{% if users %}
{% for user in users %}
<p>{{ user.profile.nickname}}</p>
{% for vstorie in vstories %}
<p>{{ vstorie.vstories.url }}</p>
{% endfor %}
{% endfor %}
{% endif %}
{% endblock content %}
看到视频,我很困惑。或者我选择了错误的方式来传达模型?
解决方案
您可以“向后”查找外键。在这种情况下,要访问用户(个人资料)的所有视频,您需要拥有所有个人资料:
def vstories (request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html",{'profiles':profiles})
然后,在模板中,您可以“向后”访问 Profile 和 VideoFile 之间的关系。
{% for profile in profiles %}
{% for videofile in profile.videofile_set.all %}
<p>{{ videofile.file.url }}</p>
{% endfor %}
{% endfor %}
诀窍在于“_set”,它允许您向后跟踪关系。
这是这种查询集的文档: https ://docs.djangoproject.com/en/2.0/topics/db/queries/#following-relationships-backward
推荐阅读
- android - delphi android应用程序“在此日期之前更新到计费库3”
- flutter - 演员表
即使在放置 cast() 颤振飞镖之后也不是 String 类型的子类型 - reactjs - 如何将默认项添加到 Material UI 芯片输入?
- github - 如何在 github API 中使用 ghs_* 令牌?
- mysql - Sequelize 3 个表,其中 2 个连接表之间的位置
- c# - 值不显示在 ListView
- python - 通过 google colab 和 gpu 连接到本地运行时
- snowflake-cloud-data-platform - 比较雪花中着陆区与暂存区的数据
- javascript - react native t 梳形错误字符串 ref "input" React.createRef()
- d3.js - D3js未定义变量创建填充颜色