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. Если вы посмотрите на выходные данные, вы увидите, что объекты сбрасываются без использования первичных или внешних ключей.