gpt4 book ai didi

python - Django 模型类中的多态性

转载 作者:太空宇宙 更新时间:2023-11-03 19:30:13 25 4
gpt4 key购买 nike

我有以下模型。

CHOICES=( ('TEXT', 'TEXT'), ('IMAGE', 'IMAGE') )

type = models.CharField(max_length=10, blank=False, choices = CHOICES)
body = models.TextField()

如果类型字段为TEXT,则数据库行包含一些纯文本。如果类型字段为IMAGE,则数据库行包含图像文件名。

我向模型类添加了一个 print_item 函数来处理这两种情况:

def print_item(self):
if self.type == "TEXT":
return self.body
elif self.type == "IMAGE":
return "<img src='%s' />" % self.body

这显然不是通用的或面向对象的方法。另一种选择是创建两个类,imagetext,它们都具有 print_item 函数,然后实例化对象(基于字符串类型) )并调用其 print_item 函数。

在这种情况下最好采取什么方法?

最佳答案

我们通过代理解决了这个 OOP 问题。我是一个代理模型,定义你的 print_item 函数。当您稍后检索对象时,问题就会出现,因为 Django 将使用基类而不是代理类。

我在这里写了一篇关于完整详细解决方案的博客文章:http://anthony-tresontani.github.com/Python/2012/09/11/django-polymorphism/

关于python - Django 模型类中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6258781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com