如何解决通过查询或 ORM 访问 Django 多态模型时的不同结果
我一直在使用 Django's model polymorphism 一段时间没有问题,但我突然遇到了一些事情,这让我怀疑我对它的工作原理的基本理解。
这基本上是我的设置方式。
from django.db import models
from polymorphic.models import polymorphicModel
class Data(polymorphicModel):
parent = models.ForeignKey('Data',null=True,blank=True,on_delete=models.CASCADE)
class Listing(Data):
name = models.CharField(max_length=128)
def __str__(self):
return '%s (%d)' % (self.name,self.id)
class Qualification(Data):
target_listing = models.ForeignKey(Listing,on_delete=models.SET_NULL,null=True)
class Job(models.Model):
data = models.ForeignKey(Data,on_delete=models.CASCADE,related_name="job_data")
长话短说,乔布斯可以随身携带数据,目前有两种类型:资格和上市。资格本身可以指向一个列表。
我突然注意到在管理站点中,一个特定的 Qualification 实例没有设置其目标列表,所以我输入了一些打印语句并发现了这一点。
q = job.data
print("job.data.id",job.data.id) // Yields 'job.data.id 20'
print("q.id",q.id) // Yields 'q.id 20'
print("job.data.target_listing",job.data.target_listing) // Yields 'job.data.target_listing myListing (12)'
print("q.target_listing",q.target_listing) // Yields 'q.target_listing myListing (12)'
qq = Qualification.objects.get(id=q.id)
print("qq.target_listing",qq.target_listing) // Yields 'qq.target_listing None' !!!!!
当我以不同的方式访问看似相同的数据时,怎么会得到不同的结果?
是我的数据库损坏了还是我遗漏了一些基本的东西?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。