如何从Django过滤器对象获取表名

时间:2017-06-17 09:12:35

标签: django django-models django-1.6

我有不同的表,列有相同的列 像

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

2 个答案:

答案 0 :(得分:2)

使用它来获取数据库表名

obj._meta.db_table

This可能有用但在1.11

答案 1 :(得分:2)

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

当你需要db表的名称时,你应该使用object._meta.db_table,如arpit-solanki所说。