#django
#django
Вопрос:
У меня есть база данных выставочных списков, связанных внешним ключом с базой данных мест, где они проводятся. Шаблоны 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:
Сообщение об ошибке связано с тем, что вы назначили класс Venue
списку, а не его экземпляру. Вам нужно вызвать класс, чтобы получить экземпляр:
listing.venue = Venue()
Комментарии:
1. Спасибо, Дэниел. (facepalms)