Присвоение значений результату запроса, уже настроенному с помощью внешнего ключа - PullRequest
0 голосов
/ 29 апреля 2011

У меня есть база данных выставок, связанных по внешнему ключу с базой данных мест, где они проходят. Шаблоны Django получают доступ к информации о месте в результатах запроса через listing.venue.name, listing.venue.url и т. Д.

Однако некоторые выставки проводятся во временных местах, и эта информация хранится в той же базе данных, что и listing.temp_venue_url, и тому подобное. Поскольку показывать условные выражения во всех шаблонах кажется расточительным и грустным, я хочу переместить информацию для временных мест туда, где шаблоны ожидают информацию для обычных мест. Это не сработало:

def transfer_temp_values(listings):
    for listing in listings:
        if listing.temp_venue:
            listing.venue = Venue
            listing.venue.name = listing.temp_venue
            listing.venue.url = listing.temp_venue_url
            listing.venue.state = listing.temp_venue_state
            listing.venue.location = listing.temp_venue_location

Ошибка удивила меня:

ValueError at /[...]/
Cannot assign "<class 'myproject.gsa.models.Venue'>": "Exhibition.venue" must be a "Venue" instance.

Я скорее думал, что это так. Как мне добиться этого?

1 Ответ

2 голосов
/ 29 апреля 2011

Сообщение об ошибке вызвано тем, что вы присвоили листингу класс Venue, а не его экземпляр. Вам нужно вызвать класс, чтобы получить экземпляр:

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