过滤上下文的最佳方法是什么。我想在我的索引页上查看来自Roslina的最后三个对象,并用相同的nazwa\u polska(外键)与它们相关的所有图像
my model.py
**class Roslina(models.Model):
id_rosliny = models.AutoField(primary_key=True)
nazwa_polska = models.CharField(max_length=256)
nazwa_lacinska = models.CharField(max_length=256)
opis = models.TextField()
data = models.DateField()
def __str__(self):
return self.nazwa_polska
class Images(models.Model):
nazwa_polska = models.ForeignKey(Roslina, related_name='image', on_delete=models.CASCADE)
image = models.ImageField(max_length=255, upload_to=generate_filename);
def __str__(self):
return self.nazwa_polska.nazwa_polska**
视图.py
from django.shortcuts import render
from django.views.generic import ListView,TemplateView
from . import models
# Create your views here.
class IndexView(TemplateView):
template_name='index.html'
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['zdjecia'] = models.Images.objects.all()
context['rosliny'] = models.Roslina.objects.all()
return context
class WyborAtlasu(TemplateView):
template_name='basic_app/wyborAtlasu.html'
“最后一个”依据什么标准?但无论如何,解决方案是sort your queryset在所需的字段上-首先使用后代排序获取“最后”记录(反向排序)-然后slice it获取前三条记录。这最好在视图本身中完成
根据您的模型定义,您可以通过
Roslina
的“图像”相关描述符获得Roslina
的相关图像(在您的示例中,它被命名为“图像”,因为您明确地将它命名为:models.ForeignKey(Roslina, related_name='image'...)
-images
会是一个更好的名称,但无论如何),即:现在,由于Django模板语言允许属性查找和方法调用(对于至少不接受任何参数的方法),您不需要将图像添加到视图的上下文中,您可以直接从模板中的
Roslina
访问它们:PS:希望我的单数/复数形式正确,对不起,恐怕我不会说你的语言;)
相关问题 更多 >
编程相关推荐