Есть ли способ создать экземпляр модели 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 модели не был частью конструктора?