Ошибка MultipleObjectsReturned() в Django
Я разместил код ниже, когда я пытаюсь просмотреть эту модель как объект в http://127.0.0.1:8000/admin/ я получаю следующую ошибку:
- MultipleObjectsReturned at /admin/configuration/epemployeeposition/2/change/
. get() вернул более одного Epemployeeposition - он вернул более 20!
Кто-нибудь знает, как это исправить? Буду очень признателен за помощь!
Вот моя модель объекта, выдающего ошибку в models.py. Для создания этой модели я автогенерировал ее из базы данных postgres с помощью python manage.py inspectdb. Я только удалил manage = False в классе Meta
база данных postgres:
Представление базы данных Postgres
models.py:
class Epemployeeposition(models.Model):
companyid = models.IntegerField(db_column='CompanyID', primary_key=True)
employeeid = models.IntegerField(db_column='EmployeeID')
linenbr = models.IntegerField(db_column='LineNbr')
isactive = models.BooleanField(db_column='IsActive')
positionid = models.CharField(db_column='PositionID', max_length=20, blank=True, null=True)
startdate = models.DateTimeField(db_column='StartDate', blank=True, null=True)
startreason = models.CharField(db_column='StartReason', max_length=3)
enddate = models.DateTimeField(db_column='EndDate', blank=True, null=True)
isterminated = models.BooleanField(db_column='IsTerminated')
termreason = models.CharField(db_column='TermReason', max_length=3, blank=True, null=True)
isrehirable = models.BooleanField(db_column='IsRehirable')
noteid = models.UUIDField(db_column='NoteID')
createdbyid = models.UUIDField(db_column='CreatedByID')
createdbyscreenid = models.CharField(db_column='CreatedByScreenID', max_length=8)
createddatetime = models.DateTimeField(db_column='CreatedDateTime')
lastmodifiedbyid = models.UUIDField(db_column='LastModifiedByID')
lastmodifiedbyscreenid = models.CharField(db_column='LastModifiedByScreenID', max_length=8)
lastmodifieddatetime = models.DateTimeField(db_column='LastModifiedDateTime')
tstamp = models.BinaryField()
class Meta:
db_table = 'EPEmployeePosition'
unique_together = (('companyid', 'employeeid', 'linenbr'), ('noteid', 'companyid'),)
Вот полный Traceback ошибки
Traceback:
Traceback (most recent call last):
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 683, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/utils/decorators.py", line 133, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/views/decorators/cache.py", line 62, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 242, in inner
return view(request, *args, **kwargs)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1888, in change_view
return self.changeform_view(request, object_id, form_url, extra_context)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/utils/decorators.py", line 46, in _wrapper
return bound_method(*args, **kwargs)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/utils/decorators.py", line 133, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1745, in changeform_view
return self._changeform_view(request, object_id, form_url, extra_context)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1768, in _changeform_view
obj = self.get_object(request, unquote(object_id), to_field)
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 861, in get_object
return queryset.get(**{field.name: object_id})
File "/home/descartes/source/bitserf/env/lib/python3.8/site-packages/django/db/models/query.py", line 499, in get
raise self.model.MultipleObjectsReturned(
configuration.models.Epemployeeposition.MultipleObjectsReturned: get() returned more than one Epemployeeposition -- it returned more than 20!
Вот как это выглядит в панели администратора
админ место ошибки объекта: Epemployeeposition object(2)
Ошибка при нажатии на объект Epemployeeposition (2)
Это сообщение об ошибке, полученное при попытке доступа к объекту
Я думаю, это происходит потому, что есть повторяющиеся значения с объектами ...
- Попробуйте удалить данные
manage flush
и создать их заново, а затем убедитесь, что ваше полеprimary_key
имеет уникальные значения .
- Или удалите
primary_key
из первого файла и Django создастid
столбец, это также решит проблему
Я вижу, что проблема не в get, вы создаете несколько объектов для одной и той же записи. попробуйте удалить все объекты и попробуйте создать новый.