django - 在一个视图中显示多个模型并获取每个帖子的 slug url - django
问题描述
我试图在一个视图和一个模板中显示来自多个模型的数据,我成功了,但我有问题,问题是android
模型中的帖子首先显示,因为我已经android
在 html 页面中添加了第一个但我想要的做的是按发布日期显示帖子我该怎么办
模型.py:
class android(models.Model):
name = models.CharField(max_length=50,default="")
slug = models.SlugField(max_length=250,default="")
post_date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
def get_image(self):
if self.app_image and hasattr(self.app_image, 'url'):
return self.app_image.url
else:
return '/path/to/default/image'
def __str__(self):
return self.name
class Meta:
ordering = ('-post_date',)
class PCgames(models.Model):
name = models.CharField(max_length=50,default="")
slug = models.SlugField(max_length=250,default="")
post_date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
def get_image(self):
if self.app_image and hasattr(self.app_image, 'url'):
return self.app_image.url
else:
return '/path/to/default/image'
def __str__(self):
return self.name
class Meta:
ordering = ('-post_date',)
视图.py:
def home_page(request):
pcgamesforhome = PCgames.objects.all()
androidforhome = Android.objects.all()
context = {'pcgamesforhome' : pcgamesforhome,'androidforhome' : androidforhome}
return render(request,'html_file/home.html',context=context)
主页.html:
<div class="container">
<div class='row'>
{% for android in androidforhome %}
<div class='col-xs-12 col-sm-6 col-md-4 website-thumb'>
<a href="{{ android.slug }}">
<img src="{{ android.get_image }}" class='image_control_for_home_page_pc_games' alt=''> </a>
<h3><a href="{{ home_page.slug }}" class="font_control_for_home_page_pc_games_name">{{ android.name }}</a></h3> </div>
{% endfor %}
</div>
<div class="container">
<div class='row'>
{% for home_page in pcgamesforhome %}
<div class='col-xs-12 col-sm-6 col-md-4 website-thumb'>
<a href="{{ home_page.slug }}">
<img src="{{ home_page.get_image }}" class='image_control_for_home_page_pc_games' alt=''> </a>
<h3><a href="{{ home_page.slug }}" class="font_control_for_home_page_pc_games_name">{{ home_page.name }}</a></h3> </div>
{% endfor %}
</div>
那么现在我应该怎么做才能按日期显示所有模型的帖子?
解决方案
您的数据库结构错误。您可以拥有一个模型和一个指定对象类型的字段,而不是为 android 和 PC 提供两个模型
class Foo(models.Model):
Type = (
('android', 'android'),
('pc', 'pc'),
)
name = models.CharField(max_length=50,default="")
slug = models.SlugField(max_length=250,default="")
post_date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
type = models.CharField(max_length=10, choices=Type)
如果您想为每个 android 或 pc 设置一个特殊字段,您可以创建具有空白和 null true attr 的字段。
视图.py:
# get all of them and order them by creation date
Foo.obejcts.all().order_by('-post_date')
# get android type objects
Foo.objects.filter(type='android')
# get pc type objects
Foo.objects.filter(type='pc')
推荐阅读
- mysql - SQL 查询 - 从以逗号分隔的一列中获取数据并按行显示
- python - 获取 tkinter 条目小部件的状态
- css - 如何在桌面模式下并排放置图像但在移动设备上将图像放在文本上方?
- python - get() 返回了多个 Friend -- 它返回了 2
- ssh - Knife ssh 命令 -X 用户:如何根据节点平台自动指定用户
- javascript - 如何通过 chrome 扩展开发将 iframe 注入 facebook?
- ios - 我可以将视图控制器显示为表单,然后再拍摄到全屏视图吗?
- java - 处理 box2d 断言错误
- angular - 切换父选项卡后未呈现 mat-tab-group 选项卡
- angular - 如何将可观察对象的值存储在变量或属性中