属性内我想知道哪个模型叫它。有没有办法做到这一点?如何知道哪个Django模型通过ForeignKey调用属性?
示例代码:
# Model One
class ServerOne(models.Model):
user = models.ForeignKey(User)
virtual_machine_server = models.ForeignKey(VirtualMachineServer)
# Model Two
class ServerTwo(models.Model):
virtual_machine_server = models.ForeignKey(VirtualMachineServer)
# Model Three
class VirtualMachineServer(models.Model):
@property
def virtual_machine(self):
# Execute the code based on which model
# is calling this property
return vm
两个ServerOne和ServerTwo具有VirtualMachineServer作为一个ForeignKey。我想在此基础上的模型被称之为
实例来调用ServerOne或ServerTwo VirtualMachineServer的虚拟机名财产和执行代码:
server_one = ServerOne.objects.get(pk=1)
vm = server_one.virtual_machine_server.virtual_machine
server_two = ServerTwo.objects.get(pk=2)
vm = server_two.virtual_machine_server.virtual_machine
我试图在ServerOne创建一个自定义管理器和ServerTwo:
class ServerOneManager(models.Manager):
def get_query_set(self):
servers = super(ServerOneManager, self).get_query_set()
for server in servers:
server.virtual_machine_server.child_instance = vm
return servers
,然后寻找在虚拟机名财产child_instance属性:
@property
def virtual_machine(self):
if not hasattr(self, "child_instance"):
raise InstanceIsNotSetException()
但它没有奏效。
注意:child_instance不在数据库中,它只是动态创建的属性。
非常感谢您的帮助。