Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Используйте "pk: null" вместо "pk: 1" (или что-то еще), что приведет к тому, что PK будет установлен на None, а когда объект будет сохранен, будет назначен первичный ключ.

Это работает для YAML по крайней мере, я предполагаю, что вы используете это, если создаете вручную.

Ответ 4

Мне пришлось иметь дело с существующей схемой БД без возможности ее изменить, поэтому мне нужна таблица со сложным первичным ключом или без нее вообще, но не с серийным. Что я сделал:

Я указал 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.admin. * и не все inlines e.t.c гарантированно работают. Это было единственное решение, которое я мог бы реализовать... ((

Ответ 5

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