Django: создавать светильники без указания первичного ключа?
одна из вещей, которая меня беспокоит в светильниках Django, заключается в том, что вы должны указать первичный ключ каждой модели. Есть ли способ создать светильники без указания первичного ключа для каждой строки?
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.т. c гарантированно работа. Это было единственное решение, которое я мог реализовать... ((
Если вы проверяете manage.py команда dumpdata, вы увидите некоторые параметры, называемые -- natural-foreign, --natural-primary. Если вы посмотрите на выходные данные, вы увидите, что объекты сбрасываются без использования первичных или внешних ключей.