हाँ, बनाया तालिका का नाम बदलने के लिए एक ही रास्ता भीतरी मेटा वर्ग के लिए db_table स्थापित करने के लिए है है।
https://docs.djangoproject.com/en/dev/ref/models/options/#table-names देखें।
हालांकि, कुछ मेटाक्लास जादू के साथ, वास्तव में ऐसा करना संभव है जो आप खोज रहे हैं। यह उदाहरण सिर्फ यह दिखाने के लिए है कि यह संभव है क्योंकि पाइथन इतनी अच्छी भाषा है। यह मॉडलबेस के बाद से Django के नए रिलीज (हालांकि असंभव) के साथ तोड़ सकता है और _meta आधिकारिक तौर पर AFAIK दस्तावेज नहीं है। मैं बस अपने मॉडल में db_table मैन्युअल रूप से जोड़ने के साथ चिपकेगा।
मॉडल वर्गों का निर्माण करने वाले कस्टम मेटाक्लास बनाकर आंतरिक मेटा क्लास पर db_table विशेषता को बदलना संभव है।
from django.db import models
from django.db.models.base import ModelBase
class ModelWithoutAppNameBase(ModelBase):
def __new__(cls, name, bases, attrs):
model = super(ModelWithoutAppNameBase, cls).__new__(cls, name, bases, attrs)
model._meta.db_table = name.lower()
return model
class ModelWithoutAppName(models.Model):
__metaclass__ = ModelWithoutAppNameBase
इसके बाद आप जब आप अपने मॉडल बनाने के ModelWithoutAppName
बजाय django.db.models.Model
से विरासत:
class YourModel(ModelWithoutAppName): # database table name will be yourmodel
foo = models.IntegerField()
मुझे यकीन है कि नहीं कर रहा हूँ, लेकिन दक्षिण ऐसा हो सकता है। –
यह दक्षिण बनाने वाली टेबलों के बारे में नहीं है, बल्कि डीजेंगो के लिए भी उनका उपयोग कर रहा है। तो हाँ और नहीं। इसे दूर करने के कुछ तरीके हमेशा होते हैं, लेकिन सुरक्षित और अच्छी तरह से प्रलेखित तरीके केवल वनीला django के अंदर है जहां तक मुझे पता है। – JackLeo