如何从 Django 过滤器对象中获取 table 名称

How to get table name from Django filter objects

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

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)

我的实际场景不是null check。我只是试图用这个例子来解释它。 有什么办法可以做到这一点。我正在使用 Django 1.6

使用它获取数据库 table 名称

obj._meta.db_table

This 可能有用,但在 1.11

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

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