Django: создавать светильники без указания первичного ключа?


одна из вещей, которая меня беспокоит в Django fixtures, заключается в том, что вы должны указать первичный ключ каждой модели. Есть ли способ создать светильники без необходимости указывать первичный ключ для каждой строки?

5 51

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 гарантированы к работа. Это было единственное решение, которое я мог реализовать... ((

Если вы проверить команду данные дампа manage.py вы увидите несколько вариантов называется-естественные-иностранные, --природно-первичный. Если вы посмотрите на выход, вы можете увидеть, что объекты сбрасываются без использования первичных ключей и внешних ключей.