Django: создавать светильники без указания первичного ключа?
одна из вещей, которая меня беспокоит в Django fixtures, заключается в том, что вы должны указать первичный ключ каждой модели. Есть ли способ создать светильники без необходимости указывать первичный ключ для каждой строки?
5 ответов:
используйте "pk: null" вместо "pk: 1" (или что-то еще), что приведет к тому, что PK будет установлен в None, и когда объект будет сохранен, будет назначен первичный ключ.
Это работает для YAML по крайней мере, я предполагаю, что вы используете это, если вы создаете вручную.
вы должны взглянуть на естественные ключи, если вы хотите добавить отношение без использования pk
https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-app-label-app-label-app-label-model
мой друг предложил
fixture
модуль: http://farmdev.com/projects/fixture/
мне пришлось иметь дело с существующей схемой БД без возможности ее изменения, поэтому мне нужна таблица со сложным первичным ключом или без него вообще - но не с последовательным. Что я сделал:
Я указал primary_key=True для поля, которое не должно быть уникальным вообще и написал перегруженный метод:
class ContraIndicationsMedicines(models.Model): contra_indication = models.ForeignKey(ContraIndication, primary_key=True) medicine = models.ForeignKey(Medicine) def validate_unique(self, exclude=None): pass
на самом деле, это сработало для моих нужд, но есть больше проверок вызова внутри django.contib.администратор.* и не все линии e.t.C гарантированы к работа. Это было единственное решение, которое я мог реализовать... ((