首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django错误中的MultipleObjectsReturned()

Django错误中的MultipleObjectsReturned()
EN

Stack Overflow用户
提问于 2022-07-07 09:29:39
回答 2查看 121关注 0票数 0

我已经发布了下面的代码,当我试图在http://127.0.0.1:8000/admin/中将这个模型看作一个对象时,我会得到以下错误:

  • /admin/configuration/epemployeeposition/2/change/的MultipleObjectsReturned get()返回多个员工职位--它返回了20多个!

有人知道怎么解决这个问题吗?我非常感谢你的帮助!

这是我的对象模型,在models.py中给出了一个错误。为了创建这个模型,我使用python从postgres数据库自动生成它。我只删除了Meta类中的manage = False

postgres数据库:

Postgres数据库视图

models.py:

代码语言:javascript
运行
复制
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'),)

以下是错误的完整跟踪

回溯:

代码语言:javascript
运行
复制
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对象(2)

单击Epemployeeposition对象时出现的错误(2)

这是试图访问对象时收到的错误消息。

EN

回答 2

Stack Overflow用户

发布于 2022-07-07 09:39:38

我认为这是因为存在重复值和对象.

  • 尝试删除数据manage flush并重新创建它,然后确保您的primary_key字段具有唯一值。
  • 或者从第一个字段中删除primary_key,Django将创建id列,这也将解决问题
票数 0
EN

Stack Overflow用户

发布于 2022-07-07 09:42:40

我可以看到问题不在于get,您正在为同一记录创建多个对象。尝试删除整个对象并尝试创建一个新对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72895430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档