如何使 ManyToMany 字段的值显示在 Django 通用 DeleteView 中

How to make ManyToMany field's value to show up in Django generic DeleteView

我一直在尝试与 Django 泛型 DeleteView 一起发送模型对象(就像为 Django ListViews 所做的那样)。坦率地说,我不确定我是否能做我想做的事。下面给出的是我正在使用的,在某种程度上它正在工作:

车型

class ApsProcesses(models.Model):
    aps_process = models.CharField(primary_key=True, max_length=1, ..)
    aps_process_text = models.CharField(max_length=35, verbose_name='Process Desc')

class ProcessStatuses(models.Model):
    proc_status = models.CharField(primary_key=True, max_length=1, ...)
    proc_status_text = models.CharField(max_length=55, verbose_name='Short Desc')
    applicable_process_compo = models.ManyToManyField(ApsProcesses, related_name='proc_choices', ..)
    proc_status_weightage = models.PositiveSmallIntegerField(null=True, ..)

观看次数

class ProcStatusesDeleteView(DeleteView):
    template_name = ..
    model = ProcessStatuses
    context_object_name = 'proc_statuses'

在我的列表视图页面中,我在对象上有一个名为 url 的对象,在 click 上,它会将用户带到我显示基础数据的删除页面(对于所选的模型实例由用户),然后向用户提供两个选项 - 确认 删除或 取消 并返回调用页面。这是我在模板中所做的:

模板

... some codes truncated here
<table>
    <tr>
        <th>Status Cd</th>
        <th>Status </th>
        <th>Process </th> 
        <th>Weightage </th>
    </tr>

<tr>
    <td style='color:red'> <strong>{{ proc_statuses }}</strong></td>
    <td>{{ proc_statuses.proc_status_text }}</td>
    <td>{{ proc_statuses.applicable_process_compo__aps_process }}</td> {# .aps_process_text #} {# << Tried to get field's attributes using both, not working though #}
    <td>{{ proc_statuses.proc_status_weightage }}</td>
</tr>
</table>
<p>Are you sure you want to delete <a style='color:red'><strong> the record?</strong></a> </p>

<input type="submit" class="btn btn-info" value="Confirm"/> 
<a href="{% url 'proc_statuses_list' %}" class="btn btn-info" role="button">Cancel</a>

... some codes truncated here

使用上面的模板代码显示所有字段值,除了对 ManyToManyField applicable_process_compo 的引用。如果我使用以下内容(即没有双下划线或带 ManyToManyField 的点):

<td>{{ proc_statuses.applicable_process_compo }}

我在字段 aps_process 的列中得到 <app_name>.ApsProcesses.None。所以我知道特定模型 ApsProcesses 正在被访问,但保存在特定模型实例中的值没有显示。

我的问题是:如何让 ManyToManyField 的 value/s 显示在页面中?

这是我解决问题的方法:

修改模型ProcessStatuses如下图:

class ProcessStatuses(models.Model):
    proc_status = models.CharField(primary_key=True, max_length=1, ...)
    proc_status_text = models.CharField(max_length=55, verbose_name='Short Desc')
    applicable_process_compo = models.ManyToManyField(ApsProcesses, related_name='proc_choices', ..)
    proc_status_weightage = models.PositiveSmallIntegerField(null=True, ..)

    def get_processes(self):
        if self.applicable_process_compo:
            return '%s' % " / ".join([applicable_process_compo.aps_process for applicable_process_compo in self.applicable_process_compo.all()])

并且在模板中修改了用于访问 ManyToMany 字段值的行,如下所示:

<td>{{ proc_statuses.get_processes }}</td>

现在我正在获取要在页面上显示的值。