我有两种模式:
class Home(db_interface.Entity):
patient = models.ForeignKey(Patient, help_text='Patient')
sode = models.ForeignKey(Sode, help_text='sode')
class Sode(db_interface.Entity):
start_date = models.DateField(validators=[validate_date_range], null=True, help_text="Start Date")
path = models.ForeignKey('Path', null=True, blank=True)
help_text="Path")
我的视图继承自ListView
的Django
。要返回queryset,我重写get_queryset()
方法:
def get_queryset(self):
instance = self.get_instance()
if instance:
return Sode.objects.filter(patient=instance).select_related('path').prefetch_related(
'home_set')
return []
要在模板中列出数据,我使用for循环:
{% for h in sode.home_set.all %}
数据完美地显示在列表中,但我现在要做的是过滤列表(不是标准的过滤方法),我的意思是列表中的项目将根据某些项目的状态进行修改。你知道吗
我试图编写一个自定义过滤器,以便每次加载模板时,列表中的数据都按我所需显示。但我认识到,在我的过滤器中,我使用了来自数据库的对象,这些对象必须在视图中,以将表示代码与数据逻辑分离,因此过滤模型不能在过滤器中
最后,我将在自定义过滤器中编写的逻辑移到了模型的ListView
中的函数中
def sort_homes_per_sode(self,sode):
homes = sode.get_queryset()
#some logic here
return list_homes_filtred_depending_on_the_type_of_some_homes_of_sode
我不知道我是否在一个好的方式,仍然不知道该函数是否有用,以及如何在模板中显示数据,并将每个过滤的家庭列表关联到相应的sode
目前没有回答
相关问题 更多 >
编程相关推荐