#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 автоматически создаст идентификатор столбца в качестве первичного ключа.