Chciałbym zapytać, co to znaczy "AttributeError:" Unicode "obiekt nie ma atrybutu" has_key "" Tutaj jest pełna ślad stosu:Python co to znaczy "AttributeError:" Unicode "obiekt nie ma atrybutu" has_key ""
Traceback (most recent call last):
File "D:\Projects\GoogleAppEngine\google_appengine\google\appengine\ext\webapp\__init__.py", line 509, in __call__
handler.post(*groups)
File "D:\Projects\workspace\foo\src\homepage.py", line 71, in post
country=postedcountry
File "D:\Projects\GoogleAppEngine\google_appengine\google\appengine\ext\db\__init__.py", line 656, in __init__
prop.__set__(self, value)
File "D:\Projects\GoogleAppEngine\google_appengine\google\appengine\ext\db\__init__.py", line 2712, in __set__
value = self.validate(value)
File "D:\Projects\GoogleAppEngine\google_appengine\google\appengine\ext\db\__init__.py", line 2742, in validate
if value is not None and not value.has_key():
AttributeError: 'unicode' object has no attribute 'has_key'
opiszę trochę więcej o sytuacji:
Najpierw stworzył models.py który ma db.Model dla CMSRequest kraj, który ma atrybut odniesienia do klasy CMSCountry
class CMSRequest(db.Model): country = db.ReferenceProperty(CMSCountry, required=True) class CMSCountry(db.Model): name = db.StringProperty(required=True)
Potem stworzyliśmy klasę bulkloader importowania danych do CMSCountry
W postaci, użytkownik może wybrać kraj z rozwijanej listy w dół, wyniki są wysłane z powrotem i zapisz przedmiotem CMSRequest
def post(self): postedcountry = self.request.get('country') cmsRequest = models.CMSRequest(postedcountry)
Może znalazłem rozwiązanie na moje pytanie, to dlatego, że nie zostały przekształcone oddelegowanego klucz CMSCountry Wróć, aby zapisać się do CMSRequest.
Dziękuję wszystkim!
Witam, edytowałem pytanie z jeszcze jednym kodem –
@Hoang: Wygląda na to, że potrzebujesz czegoś podobnego do 'cmsRequest = models.CMSRequest (country = models.CMSCountry (postedcountry))' (ja nie wiedzieć, czy to jest właściwy sposób, aby uzyskać 'CMSCountry' z ciągu, ale widzisz, co mówię). – RichieHindle
Dziękuję Richie, na podstawie Twojej sugestii, mam zmodyfikowany kod w następujący sposób: def post (self): postedcountry = self.request.get ('państwo') kraj = models.CMSCountry.get (postedcountry) cmsRequest = models.CMSRequest (kraj) Klucz kraju powinien zostać wypełniony w html dla opcji, a funkcja sendcountry będzie miała klucz CMSCountry. –