Mein models.py
hat 3 Felder. Einer von ihnen ist JSONField()
Test Upload Excel-Datei und JSONField Django REST
attribute = JSONField(null=True, blank=True) # Free to add any note to here
type = models.CharField(max_length=30, choices=FileType.choices, default=FileType.zipcode)
file = models.FileField(upload_to='import_files')
Ich habe normalerweise JSONField(null=True, blank=True)
aus Gründen der Einfachheit.
def test_upload_and_process_data_complete_case(self):
from soken_web.apps.imported_files.models import ImportFile
with open(str(settings.BASE_DIR) + '/apps/zipcodes/complete.xlsx', 'rb') as uploaded_file:
data = {
'attribute': {'author': 'Singh'},
'type': ImportFile.FileType.zipcode,
'file': uploaded_file
}
response = self.client.post(reverse('api:import_file-list'), data, format='multipart')
response.render()
self.assertEqual(status.HTTP_201_CREATED, response.status_code)
Und mein Test läuft gut ohne Schießen mit JSONField
Experiment:
Wenn ich mit JSONField
wie die gegebenen schießen. Es wird
AssertionError: Test data contained a dictionary value for key 'attribute', but multipart uploads do not support nested data. You may want to consider using format='json' in this test case.
jedoch aus meinem Verständnis habe ich wegen file
mit multipart
posten.
Frage:
Ist es möglich, den Endpunkt zu tun Unittest zu machen, die JSONField
und FileField
in der gleichen Zeit hat?
Referenz:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 14: invalid start byte
können Sie einfach die Datei in eine Zeichenfolge dekodieren und dann das Objekt als format = json senden? Was ist in der Datei? –
ist Recht Parser verwendet wird ass diskutiert hier https://stackoverflow.com/questions/36881771/django-rest-framework-file-upload-causing-an-unsupported-media-type-multipart? – andi
@SamRedway Ich habe das nie getan. Vielen Dank für Ihre Antwort. Dies sollte eine uralte Frage sein, aber ich konnte die Lösung nicht finden. – Sarit