2009-05-27 19 views
9

छोटा मैं django.contrib.auth उपयोगकर्ता मॉडल के साथ एक मुद्दा है, और मुझे उपयोगकर्ताओं को फेसबुक कनेक्ट और अन्य उपयोगकर्ताओं के बीच निरंतरता के लिए उपयोगकर्ता में स्टोर करना होगा (वास्तव में करना होगा)।Django auth उपयोगकर्ता ईमेल क्षेत्र

मैं अपने mySql डेटाबेस में मैन्युअल रूप से फ़ील्ड को संपादित करने के द्वारा "Data truncated for column 'email' at row 1" की समस्या को हल करने में सक्षम हूं, लेकिन क्या इसे हल करने का एक बेहतर तरीका है? अधिमानतः एक मुझे स्कीमा परिवर्तन के लिए रीसेट करने पर हर बार डेटाबेस डेटाबेस को मैन्युअल रूप से संपादित करने में शामिल नहीं है?

मैं डेटाबेस संपादन जब तक मैं रीसेट स्क्रिप्ट, या initial_data.json फ़ाइल में जोड़ सकते हैं के रूप में के साथ ठीक हूँ।

उत्तर

12

ईमेल फ़ील्ड 75 वर्ण की लंबाई django में हार्डकोड की गई है। आप ऐसे ही इसे ठीक कर सकते हैं:

from django.db.models.fields import EmailField 
def email_field_init(self, *args, **kwargs): 
    kwargs['max_length'] = kwargs.get('max_length', 200) 
    CharField.__init__(self, *args, **kwargs) 
EmailField.__init__ = email_field_init 

लेकिन यह सब EmailField क्षेत्रों लंबाई बदल जाएगा, ताकि आप भी आजमा सकते हैं:

from django.contrib.auth.models import User 
from django.utils.translation import ugettext as _ 
from django.db import models 
User.email = models.EmailField(_('e-mail address'), blank=True, max_length=200) 

दोनों तरीकों का init में इस कोड डाल करने के लिए यह सबसे अच्छा होगा अपने INSTALLED_APPS में किसी भी मॉड्यूल django.contrib.auth पहले

+1

ick ... कि बेकार है :(क्यों faceboo करता है के मुझे इन विशाल ईमेल पते दे? – Jiaaro

+0

अच्छी तरह से, थोड़े से बेकार है, वैसे भी आपके पास अन्य विकल्प है: अपना खुद का django.contrib.auth मॉड्यूल लिखें (यदि आप buildin auth के साथ इस तरह की अधिक परेशानी देखते हैं तो बीटीडब्ल्यू सबसे बुरी चीज नहीं है) – rombarcz

संबंधित मुद्दे