का उपयोग कर मुझे How to query abstract-class-based objects in Django? धागा mult_table_inheritance का उपयोग करने का सुझाव देता है। मैं व्यक्तिगत रूप सेDjango: ContentType बनाम multi_table_inheritance
पिछले लिंक के उदाहरण का उपयोग, मैं बस के रूप में
class StellarType(models.Model):
"""
Use ContentType so we have a single access to all types
"""
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
तो इस ऐड एक StelarType जोड़ना होगा content_type अधिक धारणात्मक आरामदायक (बस, तर्क के अधिक करीब महसूस करता है कम से कम मेरे लिए) का उपयोग कर लगता है सार बेस मॉडल
class StellarObject(BaseModel):
title = models.CharField(max_length=255)
description = models.TextField()
slug = models.SlugField(blank=True, null=True)
stellartype = generic.GenericForeignKey(StellarType)
class Meta:
abstract = True
StellarObject और StellarType के बीच सिंक करने के लिए करने के लिए, हम एक StellarType उदाहरण हर बार किसी ग्रह या तारे बनाई गई है बनाने के लिए post_save संकेत कनेक्ट कर सकते हैं। इस तरह, मैं StellarTbpe के माध्यम से StellarObjects से पूछताछ कर सकते हैं। तो मैं जानना चाहता हूं कि multi_table_inheritance का उपयोग करने के विरुद्ध इस दृष्टिकोण का उपयोग करने के प्रो और कॉन क्या हैं? मुझे लगता है कि दोनों डेटाबेस में एक अतिरिक्त टेबल बनाते हैं। लेकिन डेटाबेस प्रदर्शन के बारे में कैसे? उपयोगिता/लचीलापन के बारे में कैसे? आपके किसी भी इनपुट के लिए धन्यवाद!
मुझे असंबद्ध चीजों के लिए ContentTypes ढांचे का उपयोग करने के बारे में एक ही भावना है, लेकिन मुझे मल्टी-टेबल विरासत का उपयोग करके थोड़ा असहज महसूस होता है।सर्वोत्तम प्रथाओं की दुनिया में निर्देशित होने की कोशिश करते हुए, मैंने पाइडनी की पुस्तक (2 स्कूप्स) में पढ़ा है कि बहु-टेबल बुरा है। अंतिम सवाल यह है: क्षमता या गठबंधन? – lborgav
मैं * प्यार * दो स्कूप्स, लेकिन बहु-टेबल विरासत के खिलाफ कंबल सलाह मैं वास्तव में समझ में नहीं आता है। आपको केवल उन प्रश्नों को समझना होगा जो आपके आवेदन के लिए जेनरेट किए जा रहे हैं और क्या वे किसी समस्या का प्रतिनिधित्व करते हैं। यदि आप सुपरटाइप टेबल पर अपना अधिकांश काम कर सकते हैं, तो यह विशेष रूप से असंवेदनशील है। मैं नहीं सोच सकता कि एक सुपरटेप टेबल से पूछताछ और उपप्रकारों में शामिल होने के कारण एक सामान्य दृष्टिकोण टाइप टेबल के लिए प्रदर्शन प्रदर्शन बिंदु से ऐसा करने से भी बुरा होना चाहिए। मैं देख सकता हूं कि आप वास्तव में जटिल प्रकार के पदानुक्रम से बचना क्यों चाहते हैं ... – acjay
मैं आपसे सहमत हूं। और इसे संभालने का एक अच्छा तरीका ढूंढने के लिए मैंने अभी यह ऐप (डीजेंगो-मॉडल-यूटिल) पाया है जो बहुत उपयोगी लगता है: [विरासत प्रबंधक] (https://django-model-utils.readthedocs.org/en/ नवीनतम/managers.html) – lborgav