Django Отношения ManyToMany (m2m) в таблице результатов
Hej!
У меня проблемы с отображением отношений M2M в моей визуализированной таблице результатов в Django. Я знаю, что для этого нужно пройти через модели, но что-то не работает.
У кого-нибудь есть идеи, что я делаю неправильно?
# plants/models.py
class Plant(models.Model):
name = models.CharField(
max_length=200
)
plant_type = models.ForeignKey(
PlantType,
on_delete=models.SET_NULL,
blank=True,
null=True,
related_name="plant_type",
)
used_xducts = models.ManyToManyField(
Xduct,
through="UsedXduct",
blank=True,
related_name="used_in_plant"
)
class PlantType(models.Model):
name_english = models.CharField(
max_length=200,
blank=True
)
class UsedXduct(models.Model):
class InputOrOutputChoices(models.TextChoices):
IN = "in", _("input")
OUT = "out", _("output")
OWN = "own", _("own technical need")
plant = models.ForeignKey(
Plant,
on_delete=models.PROTECT
)
xduct = models.ForeignKey(
Xduct,
on_delete=models.PROTECT
)
def xduct_str(self):
return self.xduct
def __str__(self):
return f"Used xduct of {self.plant} of {self.xduct}"
xducts/models.py
class Xduct(models.Model):
"""(temporary) List of all xducts"""
code = models.CharField(
max_length=20,
unique=True
)
name_english = models.CharField(
max_length=200,
unique=True
)
def __str__(self):
return f"{self.code}"
# plants/template.html
{% block content %}
<div class="row">
<div class="col-md">
<div class="card card-body">
<h5>Plants</h5>
</div>
<div class="card card-body">
<table class="table table-sm">
<tr>
<th>Name</th>
<th>Plant type</th>
<th>Used Xducts</th>
</tr>
{% for i in plants %}
<tr>
<td>{{i.name}}</td>
<td>{{i.plant_type}}</td>
<td>{{i.used_in_plant.xduct}}</td>
</tr>
{% endfor %}
</table>
</div>
</div>
{% endblock %}
'name' и 'plant_type' не представляют проблемы в этом примере.
Я пробовал i.UsedXducts.xduct
, i.used_xduct.xduct
, i.Xduct.xduct
Есть ли у меня ошибка в рассуждениях?
Большое спасибо за любые идеи!