จะอ่านชื่อตารางฐานข้อมูลของอินสแตนซ์ Model ได้อย่างไร?


103

เมื่อพิจารณาจากวัตถุอินสแตนซ์ของโมเดลฉันจะรับชื่อตารางฐานข้อมูลได้อย่างไร

ฉันไม่ต้องการระบุชื่ออย่างชัดเจนในคลาส Meta

คำตอบ:


182

พบคำตอบด้วยตัวเอง: แอตทริบิวต์ _meta ของอินสแตนซ์มีข้อมูล:

model_instance._meta.db_table

นี่ค่อนข้างแปลกที่ชื่อตารางของโมเดลสามารถเข้าถึงได้จากแอตทริบิวต์ที่มีการป้องกัน_meta::Options
Alex-Bogdanov

5
@ Alex-Bogdanov: _metaทรัพย์สินไม่ได้รับการคุ้มครอง เป็นเอกสารส่วนหนึ่งของ API สาธารณะ คำนำหน้าด้วยเครื่องหมายขีดล่างเพื่อหลีกเลี่ยงความขัดแย้งกับชื่อที่ผู้คนอาจต้องการใช้กับแบบจำลองของตน
Ryan Hiebert

1
หากคุณต้องการสร้างวิธีการคืนทรัพย์สิน ... @property def table_name(self): return self._meta.db_table
Jcc.Sanabria
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.