连接模型并传递到模板



我有多个相关的models,在一个页面上,我需要在各种条件下访问来自不同models的数据。这些数据中的大部分都是在没有form的情况下访问的,因为只有少数字段需要由用户操作。

让您了解我的模型是如何相互关联的:

class User(models.Model):
first = models.ManyToManyField(First)
second= models.ManyToManyField(Second)
class First(models.Model):
[...]
class Second(models.Model):
first = models.ManyToManyField(First)
class Third(models.Model):
first = models.ForeignKey(First)
class Fourth(models.Model):
user = models.ForeignKey(User)
second = models.ForeignKey(Second)
third = models.ForeignKey(Third)
class Fifth(models.Model):
fourth = models.ForeignKey(Fourth)
class Sixth(models.Model):
fifth = models.ForeignKey(Fifth)

我很难将这些数据传递到我的template并有效地显示它。我最初以一种可怕的方式向用户显示它,因为我只是想看看我的数据是否可以访问/显示正确。这是我用来测试数据是否正确传递的一些不可靠代码的例子:

{% for second in user.second.all %}
{% for first in second.first.all %}
[...]
{% for fourth in user.fourth.all %}
[...]
{% if fourth.first_id == first.id  and fourth.second_id == second.id %}
{% if fourth.checked == True %}
[...]
{% else %}
[...]
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
[...]

这不是一件令人憎恶的事吗。现在我正在尝试重新格式化它。我知道我的处理应该在我的视图中完成,而不是在我的模板中。问题是,我不能只过滤掉我的views中的很多数据,因为我在不同的时间需要template中的大量数据(例如,我可能在model中有20条数据,我需要访问所有20条,但有些数据是在id匹配时,有些数据是idtype匹配时等等。这是很多模板侧逻辑-我认为这很糟糕(。

到目前为止,我一直在努力做这种事情,但没有运气:

second = Second.objects.filter(user__id=user.id) .select_related('First')

任何关于如何将所有这些model连接/传递到我的view并在没有嵌套嵌套循环的情况下访问数据的帮助,或者甚至只是关于如何实现这一点的指针,都将不胜感激。我也不确定我是否应该加入尽可能多的model,然后传递到我的view或传递许多单独的models

谢谢。

如果要序列化数据,请使用drf序列化程序,您需要使用嵌套的序列化程序

嵌套序列化程序的示例

class HospitalsSerializer(serializers.ModelSerializer):
class Meta:
model = Hospitals
fields = '__all__'

class HealthProductSerializers(serializers.ModelSerializer):
hospital_list = HospitalsSerializer(many=True)

class Meta:
model = HealthProduct
exclude = ("created_at", "updated_at")

最新更新