在 django 模型中铸造对象

2024-03-05

我正在使用 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(使用前将#替换为@)

在 django 模型中铸造对象 的相关文章

随机推荐