2017-06-17 34 views
3

我有相同的列 像如何從Django的過濾器得到的表名對象

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檢查。我只是試圖用這個例子來解釋它。 有什麼辦法可以做到這一點。我使用Django 1.6

+0

您是否收到任何錯誤? –

+0

我正在尋找獲取表名信息的正確語法。如果我給像上面的obj__talblename,它會給出錯誤NameError:name'obj__talblename'未定義 – Bamaboy

回答

2

object.__class__.__name__object._meta.object_name應該給你的模型的名稱。 (如果你需要型號名稱)。

當你需要db表的名字時,你應該使用object._meta.db_table,正如arpit-solanki所說。

2

使用該用於獲取數據庫表名

obj._meta.db_table

This可能是有用的,但在1.11