问题描述
我一直在使用 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 (将#修改为@)