我正在使用 models.py 制作一个 django 项目,其代码如下:
class Record(models.Model):
id = models.AutoField(primary_key=True)
class TTAMRecord(Record):
client = models.ForeignKey(TTAMClient)
class TTAMClient(models.Model):
...
class Account(models.Model):
records = models.ManyToManyField(Record)
...
我还有以下代码来插入TTAMRecord
进入records
of an Account
:
account = Account.objects.get(...)
client = TTAMClient.objects.create(...)
record = TTAMRecord.objects.create(..., client = client, ...)
account.records.add(record)
我想做(但不能)是在帐户的记录对象中调用客户端;例如。:
account = Account.objects.get(...)
for record in account.records.all():
client = record.client
...
但是,如果我不被允许这样做,因为record
这里存储为Record
(没有客户端)类型而不是TTAMRecord
(有客户端)类型...
知道如何投射物体吗?
我想使用更通用的Record
代替TTAMRecord
对于此处未说明的某些目的...
As Record
不是抽象模型,它和其他模型一样有自己的表和生命周期。但是,您可以访问相应的客户端对象:record.ttamclient
,所以你可以将你的行更改为
account = Account.objects.get(...)
for record in account.records.all():
client = record.ttamclient
...
但是,如果您有多个派生类,这会有点麻烦。在这种情况下,您必须知道您引用的是哪个派生类并使用相应的属性名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)