Вывод таблицы ManyToMany в Django
У меня небольшие проблемы с попыткой вернуть фактическое значение отдельной модели, я хотел бы вернуть простое "в процессе" или "открыто" или любое состояние, которое я добавляю. Вместо этого он показывает <queryset, и это можно увидеть только тогда, когда я добавляю .all в конце, иначе он показывает None (или пустой).
статус действительно возвращает правильные данные, однако мне просто нужно, чтобы он говорил о результате OPEN или IN progress и избавлял от набора запросов - рабочий процесс может проходить через несколько статусов в течение своего жизненного цикла
Views.py
def workflows(request):
return render(request, 'workflows/workflows.html', {
'workflows': Workflow.objects.all()
})
models.py
class Workflow(models.Model):
id = models.AutoField(primary_key=True, editable=False)
name = models.CharField(max_length=50)
description = models.TextField(null=True, blank=True, max_length=30)
status = models.ManyToManyField('Status', blank=True, related_name='workflows')
created = models.DateTimeField(auto_now_add=True)
# tags = models.ManyToManyField('Tag', blank=True)
modified = models.DateTimeField(auto_now_add=True)
# created_by =
# requester_id
retired = models.BooleanField(default=False)
def __str__(self):
return self.name
#foreign key 1 to many relationship
class Review(models.Model):
#owner =
workflow = models.ForeignKey(Workflow, on_delete=models.CASCADE)
body = models.TextField(null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
id = models.AutoField(primary_key=True, editable=False)
def __str__(self):
return f'workflow: {self.workflow} {self.created}'
#many to many relationship
# Tag to be easily identifiable.
class Tag(models.Model):
name = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
id = models.AutoField(primary_key=True, editable=False)
def __str__(self):
return self.name
# i want the status/states to be selectable
class Status(models.Model):
states = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
id = models.AutoField(primary_key=True, editable=False)
def __str__(self):
return self.states
workflow.html
{% for workflow in workflows %}
<tr>
<td>{{ workflow.id }}</td>
<td>{{ workflow.name }}</td>
<td>{{ workflow.description }}</td>
<td>{{ workflow.status.all }}</td>
<td>{{ workflow.created }}</td>
<td>{{ workflow.modified }}</td>
<td>{{ workflow.retired }}</td>
forms.py
class WorkflowForm(forms.ModelForm):
class Meta:
model = Workflow
fields = '__all__'
Спасибо вам большое.
Вы хотите просто использовать <td>{{ workflow.status.states }}</td>
вместо этого. Если возвращается None
, то в базе данных нет записи для этого столбца и элемента. Иначе возвращается состояние для этого статуса
{% for workflow in workflows %}
<tr>
<td>{{ workflow.status.states }}</td>
..
..