ValueError: Cannot assign "<QuerySet [<Poi: 1>]>": "ComplaintRelatedAmapPois.poi" must be a "Poi" instance.
初学django数据库模型models,总是分不清楚QuerySet和instance实例,错过第二次,赶紧记住。
注意:本意是想要一个instance实例,但是第一句话得到的是QuerySet,从QuerySet到instance需加QuerySet.first()
place = Poi.objects.filter(amapid=poi['id']) if not place_set.exists(): villagename = find_or_create_field_content_in_simple_class(Village, {'name': poi['name']}) pcate = find_or_create_field_content_in_simple_class(PoiCategory, {'type': poi['type'], 'typecode': poi['typecode']}) address = find_or_create_field_content_in_simple_class(Address, {'address': poi['address']}) location = poi['location'] lnglat = location.split(",") lng = float(lnglat[0]) lat = float(lnglat[1]) lnglatgcj = find_or_create_field_content_in_simple_class(LngLatGcj, {'lnggcj': lng, 'latgcj': lat}) province = find_or_create_field_content_in_simple_class(Province, {'pname': poi['pname']}) cityname = find_or_create_field_content_in_simple_class(CityName, {'cityname': poi['cityname']}) borough = find_or_create_field_content_in_simple_class(Borough, {'adname': poi['adname']}) place = Poi.objects.create(amapid=poi['id'], name=villagename, poicategory=pcate, address=address, location=lnglatgcj, pname=province, cityname=cityname, adname=borough) resp.append(place) # 修改后:
place_set = Poi.objects.filter(amapid=poi['id']) if not place_set.exists(): villagename = find_or_create_field_content_in_simple_class(Village, {'name': poi['name']}) pcate = find_or_create_field_content_in_simple_class(PoiCategory, {'type': poi['type'], 'typecode': poi['typecode']}) address = find_or_create_field_content_in_simple_class(Address, {'address': poi['address']}) location = poi['location'] lnglat = location.split(",") lng = float(lnglat[0]) lat = float(lnglat[1]) lnglatgcj = find_or_create_field_content_in_simple_class(LngLatGcj, {'lnggcj': lng, 'latgcj': lat}) province = find_or_create_field_content_in_simple_class(Province, {'pname': poi['pname']}) cityname = find_or_create_field_content_in_simple_class(CityName, {'cityname': poi['cityname']}) borough = find_or_create_field_content_in_simple_class(Borough, {'adname': poi['adname']}) place = Poi.objects.create(amapid=poi['id'], name=villagename, poicategory=pcate, address=address, location=lnglatgcj, pname=province, cityname=cityname, adname=borough) resp.append(place) else: resp.append(place_set.first())