将值分配给已使用外键设置的查询结果

时间:2011-04-29 14:08:02

标签: django

我有一个展览清单数据库,通过外键与他们所在场馆的数据库相关联。 Django模板通过listing.venue.namelisting.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 个答案:

答案 0 :(得分:2)

错误消息是因为您已将 Venue分配给列表,而不是其实例。您需要调用该类来获取实例:

listing.venue = Venue()