Объект 'NoneType' не имеет атрибута 'name' - когда связь установлена ​​между моделями. - PullRequest
0 голосов
/ 04 июля 2019

В моем приложении я использую две модели и между ними одна к одной:

relationship:db.relationship('Operation',uselist=False, backref='operat')

Ниже представлены сами модели.

class Operation(db.Model):
    __tablename__ = "operation"
    id = db.Column(db.Integer, primary_key=True)    
    date_operation = db.Column(db.DateTime, index=True)
    code = db.Column(db.Integer, index=True)
    status_id = db.Column(db.Integer)
    status = db.Column(db.String(60))
    type_id = db.Column(db.Integer)
    type = db.Column(db.String(120))
    storage_id = db.Column(db.Integer)
    storage = db.Column(db.String(240))
    contragent_id = db.Column(db.Integer, db.ForeignKey('contragent.id'))
    contragent = db.Column(db.String(240))
    sum_operation = db.Column(db.Integer)
    rezerv = db.Column(db.Integer)
    cnt_doc = db.Column(db.Integer)
    stellag = db.Column(db.Integer)

    def __repr__(self):
        return '<Operation {}>'.format(self.code)


class Contragent(db.Model):
    __tablename__ = "contragent"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(360))
    code = db.Column(db.Integer, index=True)
    adress = db.Column(db.String(480))
    inn = db.Column(db.Integer)
    operations = db.relationship('Operation',uselist=False, backref='operat')


    def __repr__(self):
        return '<Contragent {}>'.format(self.name)  

При выборе записей и получении имен записей для указанной модели p.operat.name

>>> o = Operation.query.all()
>>> for p in o:
...     print(p.id, p.operat.name, p.code)
...
2 Рога и копытца22sdsd 222

Я получаю ошибку:

Traceback (most recent call last):
  File "<console>", line 2, in <module>
AttributeError: 'NoneType' object has no attribute 'name'
>>>

Что вызывает ошибку и как ее исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...