2015-10-14 6 views
5

मैं पायथन ईव पर SQLAlcemy बैकएंड के साथ विश्वसनीय सेवा पर आधारित हूं।पाइथन ईव, एसक्यूएलकेमी और विदेशीकी

class User(CommonColumns): 

    """Model of an user in the database""" 
    __tablename__ = "user" 
    id = Column(Integer, primary_key=True) 
    username = Column(String, unique=True) 
    email = Column(EmailType, unique=True) 
    folders = relationship('Folder', backref='user') 

    def __unicode__(self): 
     return self.username 


class Folder(CommonColumns): 

    """Model of an user in the database""" 
    __tablename__ = "folder" 
    id = Column(Integer, primary_key=True) 
    name = Column(String, unique=True) 
    user_id = Column(Integer, ForeignKey('user.id'), nullable=False) 

    def __unicode__(self): 
     return "{}/{}".format(self.user.username, self.name) 

CommonColumns तरह here

यह महान काम करता है, जब डालने को अद्यतन करने और users को हटाने परिभाषित किया गया है: मैं कई रिश्ते के लिए एक साथ दो मॉडल है। हालांकि, मैं folders लिए सही डालने नहीं मिल सकता है:

newfolder = { 
'name':'FOLDER', 
'user_id': 1, 
} 
response = requests.post("http://localhost:8080/api/v1.0/folders",data=newfolder) 
print response.json() 

{u'_error': {u'code': 422, 
    u'message': u'Insertion failure: 1 document(s) contain(s) error(s)'}, 
u'_issues': {u'exception': u"'user'"}, 
u'_status': u'ERR'} 

कौन सा एक नहीं बल्कि छुपे त्रुटि संदेश है। मैं पायथन ईव के दस्तावेज पढ़ रहा हूं और मैं वास्तव में समझ नहीं पा रहा हूं कि मैं क्या गलत कर रहा हूं। user और folder प्रविष्टियों के बीच एकमात्र अंतर मैं देखता हूं कि किसी के पास विदेशी कुंजी है।

कोई विचार यह क्यों हो रहा है?

उत्तर

5

ठीक है, ऐसा लगता है कि समस्या यह थी कि मेरे पास संसाधन और तालिका नाम (संसाधन के लिए उपयोगकर्ता ", तालिका नाम के लिए" उपयोगकर्ता ") के लिए समान नाम नहीं था। ऐसा लगता है कि पूर्व में विदेशी कुंजी के साथ समस्याएं बढ़ रही हैं, लेकिन संबंधों के बिना इकाइयों के साथ असफल नहीं होती हैं।

संसाधन नामों से मेल खाने के लिए तालिका नामों को बदलने से समस्या हल हो गई।

मुझे आशा है कि यह किसी के लिए उपयोगी होगा।

+0

क्या आप कृपया अपना समाधान विस्तृत कर सकते हैं ... मैं एक समान स्थिति में हूं। तालिका बी में तालिका ए में एक विदेशी कुंजी है। तालिका ए (पैरेंट) में सम्मिलित करना ठीक है लेकिन तालिका बी में डालने का प्रयास करते समय त्रुटि "cpa_id" फेंकता है: "अज्ञात फ़ील्ड" – dnafication

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