0

嗨,我有以下代码,我在 feature_list = 中有不同的元素['spa','castle','country_house','coast','golf','boutique','civil','private_hire','city','gay']。在数据库中,值为 1 或 0。所以我试图检查它们是否为 1 并将它们附加到新数组中。

try:
        hotel_main = models.Hotel.objects.get(slug=slug)
    except models.Hotel.DoesNotExist:
        try:
            hotel_main = models.Hotel.objects.get(id=id)
        except models.Hotel.DoesNotExist:
            raise Http404
    feature_list = ['spa','castle','country_house','coast','golf','boutique','civil','private_hire','city','gay']
    hotel_features = []
    for feature in feature_list: 
        if hotel_main.feature == 1: 
            hotel_features.append(feature)  

它给了我以下错误:“酒店”对象没有属性“特征”

但在我的理解中,特征应该代表数组的字符串......请纠正我

4

2 回答 2

0

你在做什么是错误的。试试这个 -

hotel_main = models.Hotel.objects.get(slug=slug)
feature_list = ['spa','castle','country_house','coast','golf','boutique','civil','private_hire','city','gay']
hotel_features = []
for feature in feature_list: 
    if getattr(hotel_main, feature, 1):
        hotel_features.append(feature)

您正在执行的操作将给出异常的原因是因为您正在使用 hotel_main 对象动态检查列字段。.我认为该功能不适用于字符串文字。因此引入getattr.

希望这可以帮助...

于 2012-09-17T12:27:04.743 回答
0

但在我的理解中,特征应该代表数组的字符串......请纠正我

您正确地将数组中的字符串分配给feature,但是您的问题在于调用hotel_main.feature. Python 认为您在 hotel_main 对象上寻找一个名为 'feature' 的属性。要使用当前分配给变量的属性查找属性,您应该使用Python 的内置 getattr 函数

feature_value = getattr(hotel_main, feature, 0) //default to not having the feature
if feature_value == 1:
    // the rest of your code
于 2012-09-17T13:00:43.123 回答