如何从 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 所说。
我有具有相同列的不同表 喜欢
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 所说。