Django 一对一反向关系给出 RelatedObjectDoesNotExist,如果它存在



>我有以下型号

class SimulationStatus(models.Model):
simulation = models.ForeignKey(Simulation, on_delete=models.CASCADE)
name = models.CharField(
max_length=80,
choices=SimStatusOptions.to_sequence()
)
# Simulation time
time = models.PositiveIntegerField(
null=True, blank=True,
verbose_name="time (in seconds)",
help_text="simulation time in seconds"
)
# Field to track the active_status
active_simulation = models.OneToOneField(
Simulation, on_delete=models.CASCADE, related_name='active_status',
null=True, blank=True
)

class Simulation(models.Model):
"""
Simulation model
"""
uuid = models.UUIDField(default=uuid.uuid4)
organisation = models.ForeignKey(
Organisation, on_delete=models.CASCADE, null=False, blank=False
)
user = models.ForeignKey(
User, on_delete=models.CASCADE, null=False, blank=False
)

active_status上的反向查找会引发异常,即使实例确实存在也是如此。

from api.simulations.models import Simulation
s = Simulation.objects.get(id=852)
s.active_status
# exception
---------------------------------------------------------------------------
RelatedObjectDoesNotExist                 Traceback (most recent call last)
<ipython-input-11-bbd6df757cc6> in <module>
----> 1 s.active_status
/usr/local/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py in __get__(self, instance, cls)
413                 "%s has no %s." % (
414                     instance.__class__.__name__,
--> 415                     self.related.get_accessor_name()
416                 )
417             )
RelatedObjectDoesNotExist: Simulation has no active_status.
from api.simulations.statuses.models import SimulationStatus
ss = SimulationStatus.objects.get(simulation=s)
ss
<SimulationStatus: created 0 sec, simulation: weir>

我真的不明白这是为什么。我已经读过这篇文章,但我的关系不是空的。

我也有类似的问题,在我的情况下,我正在保存一个实例,但它没有反向添加,因此是单方面的关系。当我回忆起它是由我删除并重新建模应用程序的OneToOneField上的null=True, blank=True引起的。

相关内容

  • 没有找到相关文章

最新更新