Как «отключить» первичные ключи по умолчанию в djongo

#python #django #djongo

Вопрос:

Я получаю эту ошибку после обновления до djongo 1.3.6

ERRORS: some_app.Some_Class: (models.E026) The model cannot have more than one field with 'primary_key=True'.

это класс, выдающий ошибку:

 # some_app/some_class.py 

from djongo import models


class Some_Class(models.Model):
    _id = models.ObjectIdField()
    event_id = models.IntegerField(primary_key=True) 
    league = models.CharField(max_length=512)
    event_date = models.IntegerField()
    event_text = models.CharField(max_length=512)
    event_group_id = models.IntegerField()
    group_name = models.CharField(max_length=512)
 

как вы можете видеть, у меня определен только один ПК, но, по-видимому, джонго создает еще один. Есть идеи о том, как отключить это поведение djongo????

Комментарии:

1. Мне просто интересно, почему вы хотите изобрести колесо, если у вас уже есть колеса.но id вы просто хотите сгенерировать случайный идентификатор для этого либо используйте uuid4, либо создайте функцию, которая будет генерировать случайный идентификатор каждый раз

2. хороший вопрос, я просто беру на себя чей-то другой проект, и моей задачей было обновить python и все его пакеты. Для большего контекста это работало раньше просто отлично до обновления. Я проверил документацию djongo, но не повезло

3.Из документов djongo By default the ObjectIdField internally sets primary_key as True. Mb вы должны переключать _id event_id типы полей и удалять primary_key=True их в конечном итоге _id ?

Ответ №1:

В настоящее время модели Django поддерживают только первичный ключ с одним столбцом. Если вы не укажете primary_key = True для поля в вашей модели, Django автоматически создаст идентификатор столбца в качестве первичного ключа.