【问题标题】:Get ID value instead of the name in django-tables2获取 ID 值而不是 django-tables2 中的名称
【发布时间】:2014-09-23 18:25:48
【问题描述】:

我是 django 新手,我有一些问题。

我有一个用 django-tables2 渲染的 html 表,这个表是基于一个模型的: 表格.py

class MasterTable(tables.Table):
    class Meta:
        model = Master

我有一个 JS 脚本可以在第一列插入一个下拉按钮:

<script language="javascript">
function GetAllValues() {
    var tbl = document.getElementById("myTable");
    for (var i = 0; i < tbl.rows.length; i++){
       for (var i = 1; i < tbl.rows.length; i++){
           tbl.rows[i].cells[0].innerHTML = '<div class="btn-group">\
                            <button type="button" class="btn btn-xs btn-primary dropdown-toggle" data-toggle="dropdown">'
                                + tbl.rows[i].cells[0].innerHTML +
                            '<span class="caret"></span>\
                            </button>\
                            <ul class="dropdown-menu" role="menu">\
                                <li><a data-toggle="modal" data-target="#" >Configura</a>\
                                </li>\
                                <li><a data-toggle="modal" data-target="#">Cambiar estado</a>\
                                </li>\
                                <li><a data-toggle="modal" data-target="#">Ver estadíicas</a>\
                                </li>\
                                <li class="divider"></li>\
                                <li><a data-toggle="modal" data-target"#">Reproceso</a>\
                                </li>\
                            </ul>\
                        </div>'
       } 
}    
</script>

在我的 models.py 中有这个

class Provider(models.Model):
    id_provider = models.IntegerField(blank=True, null=True, primary_key=True)
    name = models.CharField(max_length=50, blank=True)

    class Meta:
        managed = False
        db_table = 'mpc_proveedores'

    def __unicode__(self):
        return self.name


class Master(models.Model):
    id_provider = Models.ForeignKey(Provider,
                                    db_column='id_provider',
                                    primary_key=True,
                                    verbose_name='Provider')
    year = models.IntegerField(blank=True, null=True)
    month = models.IntegerField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'mpc_master'

我在html表格中渲染的表格是模型Master。 当我在 html 表中呈现主模型时,向我显示提供程序名称而不是 id_provider,这很好,但是当我单击 html 表的第一列时,我需要获取 id_provider 的值,而不是名称提供者。

如何获取 id_provider 的值而不是提供者名称,然后将 id_provider 作为参数传递给另一个页面(表单)。

非常感谢任何建议、链接或 sn-p

提前致谢

【问题讨论】:

  • 我没用过 django-tables2,但你应该可以得到类似这样的 id_provider:Master.id_provider_id 或 Master.id_provider.id_provider

标签: python django django-tables2


【解决方案1】:

你可以这样做:

class MasterTable(tables.Table):

    def render_id_provider(self, **kwargs):
        return kwargs['value'].id_provider
    class Meta:
        model = Master

【讨论】:

  • 感谢 Ruddra,在我的 hmtl 页面中只有一个问题,在该页面中,我显示的表格显示的是值而不是提供者的名称。现在我可以得到我需要的东西,但是用数字代替提供者名称的表格看起来不太好。
  • 好吧,如果您使用:return str(kwargs['value'].id_provider) + ' ' + kwargs['value'].name 而不是 return kwargs['value'].id_provider,您可以在表格中同时提供名称和 ID
  • 感谢您的快速回复。我试试你写给我的,但修改不会解决问题。我会继续寻找,如果我找到了我会告诉你的
猜你喜欢
  • 2020-11-12
  • 1970-01-01
  • 2021-08-29
  • 2021-09-10
  • 1970-01-01
  • 2011-03-11
  • 2018-01-16
  • 2021-01-12
  • 1970-01-01
相关资源
最近更新 更多