Saya memiliki model Car dengan name, model dan serial number bidang. Di mana kombinasi bidang name dan model harus unik.

Saya menggunakan serializers.ModelSerializer dari rest_framework dan validator UniqueTogetherValidator.

    validators = [
        UniqueTogetherValidator(
            queryset=models.Car.objects.all(),
            fields=['name', 'model']
        )
    ]

Basis data sudah memiliki entri {'name': 'one', 'model': '13', 'serial number': 99}.

Saya ingin menambahkan daftar mobil:

    data = [{'name': 'one', 'model': '13', 'serial number': 99},   {'name': 'two', 'model': '3', 'serial number ': 98},   {' name ':' three ',' model ':' 1 ',' serial number ': 949}]

Untuk ini saya menggunakan:

serializer = CarSerializer (data = data)

if serializer.is_valid ():
     serializer.save ()

Saya mengerti bahwa is_valid() akan mengembalikan False. Dalam daftar yang lulus, hanya satu catatan yang tidak valid, bagaimana cara menyimpan data yang valid dari daftar yang lulus?

0
fabel 12 Mei 2021, 14:12

1 menjawab

Jawaban Terbaik
for item in data:
    serializer = CarSerializer (data = item)

    if serializer.is_valid ():
        serializer.save ()

Atau jika Anda tidak ingin melakukan banyak pertanyaan:

    valid_data = []
    for item in data:
        serializer = CarSerializer (data = item)
        if serializer.is_valid():
            valid_data.append(item)

    valid_data_serializer = CarSerializer (data = valid_data)
    if valid_data_serializer.is_valid ():
        valid_data_serializer.save ()
0
E Paul 12 Mei 2021, 12:06