【问题标题】:How to get table name from Django filter objects如何从 Django 过滤器对象中获取表名
【发布时间】:2017-06-17 09:12:35
【问题描述】:

我有不同的表具有相同的列 喜欢

class teachers(models.Model):
    x= models..CharField(max_length=250, blank=True, null=True);
    y= models..CharField(max_length=250, blank=True, null=True);

class students(models.Model):
    x= models..CharField(max_length=250, blank=True, null=True);
    z= models..CharField(max_length=250, blank=True, null=True);

我正在使用一个函数来处理两个表的 x 列。因此,如果 x 的值中有任何不需要的值,我需要用列名记录它。

喜欢 f = students.objects.filter()

def validate_x(obj):
    if obj.x == None:
        logger.error("None object found in table" + str(obj__tablename))
        return False
    else:
        return True

for i in f:
    validate_result = validate_x(i)

我的实际情况不是空检查。我只是试图用这个例子来解释它。 有什么办法可以做到这一点。我正在使用 Django 1.6

【问题讨论】:

  • 您是否收到任何错误消息?
  • 我正在寻找获取表名信息的正确语法。如果我像上面一样给出 obj__talblename,它会给出错误 NameError: name 'obj__talblename' is not defined

标签: django django-models django-1.6


【解决方案1】:

object.__class__.__name__object._meta.object_name 应该为您提供模型的名称。 (如果您需要型号名称)。

当您需要数据库表的名称时,您应该使用object._meta.db_table,正如 arpit-solanki 所说。

【讨论】:

    【解决方案2】:

    使用它来获取数据库表名

    obj._meta.db_table

    This 可能有用,但在 1.11 中

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      相关资源
      最近更新 更多