Я создаю приложение с динамическими моделями (следующие рекомендации [1]) для создания интерфейса для уже существующей базы данных.Первичный ключ в динамической модели
Это моя функция, чтобы создать одну из моделей (на самом деле он имеет больше полей и прочее, но это должно быть достаточно):
def create_model(name):
# Meta class
class Meta:
pass
# Set up a dictionary to simulate declarations within a class
attrs = {'__module__': 'mymodule',
'Meta': Meta,
'fields': {
'myID': models.CharField(max_length=2, db_column='myID', primary_key=True),
'__unicode__': lambda self: self.myID,
}
}
# Create the class, which automatically triggers ModelBase processing
model = type(name, (models.Model,), attrs)
admin.site.register(model, admin.ModelAdmin)
return model
Но когда я пытаюсь получить доступ к этой модели я получаю следующее OperationalError
:
(1054, "Unknown column 'database_table.id' in 'field list'")
кажется, что Django не принимая во внимание моего prymary_key
определения для поля myID
и это создает параметр по умолчанию id
поля.
Я что-то упустил? Это «ошибка», связанная с созданием динамической модели? Кто-нибудь знает обходное решение для этого? Благодаря
[1] https://code.djangoproject.com/wiki/DynamicModels
Спасибо! После прочтения вашего ответа я вернулся к своей ссылке (см. [1] выше), чтобы проверить, было ли это ошибкой, и я только что понял, что он делает именно то, что вы говорите: 'attrs.update (поля)' Я реализовал это неправильно ... – jgsogo