2012-08-03 12 views
10

काम नहीं कर रहा मैं निम्नलिखित मॉडल है:Django मॉडल सत्यापन

class CardInfo(models.Model): 
    custid = models.CharField(max_length=30, db_index=True, primary_key = True) 
    first_name = models.CharField(max_length=100) 
    last_name = models.CharField(max_length=100) 
    street = models.CharField(max_length=100) 
    building = models.CharField(max_length=100) 
    city = models.CharField(max_length=100) 
    state = models.CharField(max_length=100) 
    zipcode = models.CharField(max_length=100) 
    payment_method = models.CharField(max_length=100, null=True, blank=True) 
    amount = models.CharField(default = '0',max_length=10, null=True, blank=True) 
    valid_to_month = models.CharField(max_length=100, null=True, blank=True) 
    valid_to_year = models.CharField(max_length=100, null=True, blank=True) 
def __unicode__(self): 
    return "Cust ID %s" %(self.custid) 

खोल में, जब मैं दे full_clean मैं मान्यता त्रुटि मिलती है लेकिन पर सहेजें त्रुटि फेंक बजाय बचाया जा रहा रहा है। ऐसा क्यों है? मैं django1.3 और अजगर 2.6 का उपयोग कर रहा:

c=CardInfo(custid="Asasasas") 
c.full_clean() 
Traceback (most recent call last): 
File "<console>", line 1, in <module> 
File "/usr/local/python2.6/lib/python2.6/site-packages/django/db/models/base.py", line 828, in full_clean 
raise ValidationError(errors) 
ValidationError: {'building': [u'This field cannot be blank.'], 'city': [u'This field cannot be blank.'], 'first_name': [u'This field cannot be blank.'], 'last_name': [u'This field cannot be blank.'], 'zipcode': [u'This field cannot be blank.'], 'state': [u'This field cannot be blank.'], 'street': [u'This field cannot be blank.']} 
c.save() 
+0

यह अखंडता त्रुटि देना चाहिए। क्या आपके मॉडल/डीबी ठीक से सिंक हो गए हैं? आपके ऐप का एसक्यूएल उपयोगी होगा। – Rohan

+0

हाँ मैंने ऐसा किया है ... कोई सुधार नहीं –

उत्तर

23

प्रलेखन explicit about this है:

नोट सत्यापनकर्ताओं कि जब आप एक मॉडल को बचाने स्वचालित रूप से चलाने नहीं किया जाएगा, लेकिन यदि आप एक ModelForm उपयोग कर रहे हैं, यह आपके फॉर्मेटर्स को आपके फॉर्म में शामिल किसी भी फ़ील्ड पर चलाएगा।

यदि आप किसी फॉर्म का उपयोग नहीं कर रहे हैं तो बचत से पहले स्वच्छ विधियों को कॉल करना आपकी ज़िम्मेदारी है।

मॉडल प्रमाणकों कॉलिंग इस तरह मजबूर हो सकते हैं:

model_instance.full_clean() 
संबंधित मुद्दे