【发布时间】:2017-07-11 07:04:11
【问题描述】:
我正在尝试在模板中迭代子模型实例的属性,特别是我只想访问子模型的属性。在运行时,我不知道它是什么具体的子类。使用django-model-utils 我已经能够返回子类而不是父类,这是一个开始,但是当我访问它的属性时,我得到了父类和返回的子类:
class Product(models.Model):
created_at = models.DateTimeField(default=timezone.now)
updated_at = models.DateTimeField(auto_now=True)
name = models.CharField(...)
objects = InheritanceManager()
def attrs(self):
for attr, value in self.__dict__.iteritems():
yield attr, value
class Vacuum(Product):
power = models.DecimalField(...)
class Toaster(Product):
weight = models.DecimalField(...)
views.py
def product_detail(request, slug):
product = Product.objects.get_subclass(slug=slug)
模板
{% for name, value in product.attrs %}
<td>{{ name }}</td>
<td>{{ value }}</td>
{% endfor %}
【问题讨论】:
-
不应该是这样吗?一个child继承了parent的属性,所以
Product属性比如created_at也会显示出来是正常的吧? -
@LaundroMat 我假设是这样,但如果可能的话,我正试图找到一种仅返回孩子属性的方法
-
好吧 :) 也许这个答案可以让你上路? stackoverflow.com/questions/7136154/…
-
@LaundroMatthanks 这很有帮助,` __class__` 是我想念的秘诀
标签: python django django-model-utils