gpt4 book ai didi

python - 获取/呈现一对多关系的最佳方式是什么?

转载 作者:行者123 更新时间:2023-11-28 22:07:57 24 4
gpt4 key购买 nike

我有 2 个模型,看起来像这样:

class Entry(models.Model):
user = models.ForeignKey(User)
dataname = models.TextField()
datadesc = models.TextField()
timestamp = models.DateTimeField(auto_now=True)

class EntryFile(models.Model):
entry = models.ForeignKey(Entry)
datafile = models.FileField(upload_to="uploads/%Y/%m/%d/%H-%M-%S")

我想为特定用户呈现所有条目及其相关文件。在我看来,现在我这样做是为了获得值(value):

    entries = Entry.objects.filter(user=request.user).order_by("-timestamp")
files = {}
for entry in entries:
entryfiles = EntryFile.objects.filter(entry=entry)
files[entry] = entryfiles
return render_to_response("index.html", {'user': request.user, 'entries': entries, 'files': files, 'message': message})

但我不能/不知道如何在我的模板中使用这些数据。这是我现在所做的,但不起作用:

{% for entry in entries %}
<td>{{ entry.datadesc }}</td>
<td><table>
{{ files.entry }}
{% for file in files.entry %}
<td>{{ file.datafile.name|split:"/"|last }}</td>
<td>{{ file.datafile.size|filesizeformat }}</td>
<td><a href="{{ object.datafile.url }}">download</a></td>
<td><a href="{% url main.views.delete object.id %}">delete</a></td>
{% endfor %}
</table></td>
{% endfor %}

任何人都可以告诉我我是否在 View 中以正确的方式进行操作,然后如何在模板中访问这些数据?

谢谢!

最佳答案

只需将您的 View 代码剪切到这一行:

entries = Entry.objects.filter(user=request.user).order_by("-timestamp")

并在模板中执行此操作:

{% for entry in entries %}
<td>{{ entry.datadesc }}</td>
<td><table>
{% for file in entry.entryfile_set.all %}
<td>{{ file.datafile.name|split:"/"|last }}</td>
<td>{{ file.datafile.size|filesizeformat }}</td>
<td><a href="{{ object.datafile.url }}">download</a></td>
<td><a href="{% url main.views.delete object.id %}">delete</a></td>
{% endfor %}
</table></td>
{% endfor %}

我非常喜欢使用 related_name但是,在模型中,因此您可以更改此行:

entry = models.ForeignKey(Entry)

对此:

entry = models.ForeignKey(Entry, related_name='files')

然后您可以通过更改以下内容来访问特定条目的所有文件:

{% for file in files.entryfile_set.all %}

为了更具可读性/显而易见:

{% for file in entry.files.all %}

关于python - 获取/呈现一对多关系的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/933612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com