Есть ли способ создать экземпляр модели Django с автоматической генерацией первичного ключа без передачи именованных аргументов?

Я пытаюсь создать общую функцию в Django, создающую кучу экземпляров модели путем вызова оцененного конструктора модели. Т.е. я передаю строку model = "Model", которая соответствует реальной модели в моей базе данных. Затем я вызываю Model = getattr(mymodule, model), чтобы получить конструктор для этой модели. Теперь я могу вызвать Model(list, of, arguments). Конечно, эти аргументы будут отличаться в зависимости от передаваемых моделей, но это не проблема до тех пор, пока какое-либо поле в моей модели обозначено как primary_key=True. Но когда модель имеет автоматически генерируемый id, конструктор попытается передать первый аргумент (в моем случае) полю id, и все развалится, и я получу что-то вроде ValueError: Field 'id' expected a number but got 'some_string'.

Я обнаружил, что одним из решений этой проблемы является передача именованных аргументов, но я думаю, что это сделает мой код очень сложным, поскольку я пытаюсь сохранить его общим для всех моих моделей. Другой возможностью является передача None в качестве первого аргумента, и это работает, но я думаю, что это не совсем верное решение.

Есть ли способ создать экземпляр модели с автоматической генерацией первичного ключа без передачи именованных аргументов? Можно ли сделать так, чтобы id модели не был частью конструктора?

Вернуться на верх