2015-10-14 6 views
5

Я работаю в Python Eve на основе RESTful-сервиса с использованием SQLAlcemy бэкэнд. У меня есть две модели с одной ко многим отношений:Python Eve, SQLalchemy и ForeignKey

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'} 

который является сообщение довольно загадочное об ошибке. Я читал документацию Python Eve, и я не могу понять, что я делаю неправильно. Единственная разница, которую я вижу между user и folder, заключается в том, что у вас есть внешние ключи.

Любая идея, почему это происходит?

ответ

5

Ну, казалось, что проблема в том, что проблема была в том, что У меня не было то же имя для ресурса и имя таблицы («пользователи» для ресурса, «пользователь» для имени таблицы). Это, похоже, поднимает проблемы с внешними ключами накануне, но не терпит неудачу с сущностями без отношений.

Изменение имен таблиц в соответствии с именами ресурсов позволило решить проблему.

Надеюсь, это будет полезно для всех.

+0

Не могли бы вы рассказать о своем решении ... Я в подобной ситуации. Таблица B имеет внешний ключ в таблице A. Вставка в таблицу A (родительская) в порядке, но при попытке вставить в таблицу B выдает ошибку '' cpa_id ":« неизвестное поле »' – dnafication

Смежные вопросы