2010-11-03 8 views
5

मेरे पास यह Django मॉडल है:GeoDjango और MySQL: अंक नल नहीं हो सकते हैं, मैं अन्य "खाली" मूल्य का उपयोग क्यों करूँ?

from django.contrib.gis.db import models 

class Event(models.Model): 
    address = models.TextField() 
    point = models.PointField('coordinates', null=True, blank=True) 

जब मैं MySQL का उपयोग करके इस मॉडल को सिंक करता हूं, तो यह त्रुटि संदेश इंडेक्स बनाने के दौरान मुद्रित होता है:

Failed to install index for events.Event model: (1252, 'All parts of a SPATIAL index must be NOT NULL') 

इसलिए, null=True का उपयोग करने में सक्षम नहीं है (दिया गया है कि मैं उस इंडेक्स को रखना चाहते हैं), मेरे पास अन्य संभावनाएं क्या हैं? मैं बिंदु (0,0) को "रिक्त" के रूप में परिभाषित कर सकता हूं, लेकिन फिर मुझे उस सम्मेलन को याद रखना होगा जहां मैं डेटा का उपयोग करने की योजना बना रहा हूं, अन्यथा अफ्रीका के अटलांटिक पश्चिम में कहीं भी बहुत सारी घटनाएं होती हैं ...

क्या अन्य संभावनाएं हैं?

उत्तर

1

मुझे नहीं लगता कि आपके पास यहां कई विकल्प हैं। या तो आप प्लेसहोल्डर जैसे (0, 0) का उपयोग करते हैं, या आप किसी ऑब्जेक्ट में बिंदु को समाहित करते हैं और ऑब्जेक्ट को संदर्भित करते हैं जहां आपको बिंदु की आवश्यकता होती है। इस तरह वस्तु के संदर्भ को निरर्थक बनाया जा सकता है, लेकिन अतिरिक्त जुड़ाव प्रदर्शन को प्रभावित करेगा और चीजों को जटिल करेगा।

0

एक त्वरित विचार यह होगा कि आपके पास एक वास्तविक बिंदु होने पर एक और बूलियन फ़ील्ड है जिसे आप सच/झूठी के रूप में चिह्नित करते हैं। यह पूछताछ आसान बना देगा क्योंकि आप बूलियन क्षेत्र को जहां खंड में जोड़ सकते हैं।

class Event(models.Model): 
    ... 
    has_point = models.BooleanField(default=False) 
    point = models.PointField('coordinates', ...) 

Event.objects.filter(has_point=True)...#whatever else you need when handling location 
0

मुझे बस एक ही समस्या थी। मेरे लिए, मुझे spatial_index बनाने के लिए निर्दिष्ट करने की आवश्यकता नहीं थी। तो आपका मॉडल बदल जाएगा:

from django.contrib.gis.db import models 

class Event(models.Model): 
    address = models.TextField() 
    point = models.PointField('coordinates', null=True, blank=True, spatial_index=False) 
संबंधित मुद्दे