在ListView中添加具有主模型外键的另一个模型,可以通过以下步骤实现:
下面是一个示例代码,演示如何在ListView中添加具有主模型外键的另一个模型:
# models.py
from django.db import models
class MainModel(models.Model):
name = models.CharField(max_length=100)
class ForeignKeyModel(models.Model):
main_model = models.ForeignKey(MainModel, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
# views.py
from django.views.generic import ListView
from .models import MainModel, ForeignKeyModel
class MyListView(ListView):
model = ForeignKeyModel
template_name = 'my_list.html'
def get_queryset(self):
main_model_id = self.kwargs['main_model_id']
main_model = MainModel.objects.get(id=main_model_id)
queryset = ForeignKeyModel.objects.filter(main_model=main_model)
return queryset
# my_list.html
{% for foreign_key_model in object_list %}
<p>{{ foreign_key_model.name }}</p>
{% endfor %}
在上述示例中,我们首先定义了两个模型:MainModel和ForeignKeyModel。ForeignKeyModel包含一个外键字段main_model,与MainModel相关联。
然后,我们定义了一个ListView视图类MyListView,指定了模型为ForeignKeyModel,并指定了模板my_list.html。
在get_queryset方法中,我们首先获取了主模型的实例对象,然后使用filter方法过滤出与主模型相关联的外键模型实例对象。
最后,在模板my_list.html中,我们使用for循环遍历外键模型实例对象,并显示其名称。
这样,当访问MyListView视图时,将根据传递的主模型ID过滤出与之相关联的外键模型实例对象,并在模板中进行渲染显示。
请注意,上述示例中的代码仅为演示目的,实际应用中可能需要根据具体情况进行适当的修改和调整。
领取专属 10元无门槛券
手把手带您无忧上云