Как перебрать Query List модели django - PullRequest
0 голосов
/ 08 марта 2019

Я читаю файл json с веб-сайта, и если запись отсутствует в моем наборе запросов клиентов, я хочу создать нового клиента для этой записи.Когда я перебираю набор запросов, Django пытается создать нового клиента, даже если он уже находится в наборе запросов.

См. Мой код ниже:

from rest_framework import generics
from customer.models import Customers
from .serializers import CustomersSerializer
import json
import urllib.request

class CustomerAPIView(generics.ListAPIView):
    j = urllib.request.urlopen("https://web.njit.edu/~jsd38/json/customer.json")
    customer_data = json.load(j)
    queryset1 = Customers.objects.values_list('CustomerId', flat=True)
    for customer in customer_data:
        if customer["@Id"] not in queryset1.iterator():
            CustomerId = customer["@Id"]
            Name = customer["Name"]
            PhoneNumber = customer["PhoneNumber"]
            EmailAddress = customer["EmailAddress"]
            StreetLine = customer["Address"]["StreetLine1"]
            City = customer["Address"]["City"]
            StateCode = customer["Address"]["StateCode"]
            PostalCode = customer["Address"]["PostalCode"]
            cus = Customers()
            cus.CustomerId = CustomerId
            cus.Name = Name
            cus.PhoneNumber = PhoneNumber
            cus.EmailAddress = EmailAddress
            cus.StreetLine = StreetLine
            cus.City = City
            cus.StateCode = StateCode
            cus.PostalCode = PostalCode
            cus.save()
    queryset = Customers.objects.all()
    serializer_class = CustomersSerializer

1 Ответ

1 голос
/ 08 марта 2019

Ваш JSON возвращает строки для ключа "@Id", я предполагаю, что ваша модель Customers имеет целые числа в виде поля CustomerId.

Вы должны преобразовать их в str или int:

if int(customer["@Id"]) not in queryset1:
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...