首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问Django中多表继承中的子模型类属性

访问Django中多表继承中的子模型类属性
EN

Stack Overflow用户
提问于 2017-02-21 15:09:05
回答 1查看 972关注 0票数 0

我试图在模板中迭代子模型实例的属性,具体来说,我只想访问childs属性。在运行时,我不知道它是什么具体的子类。使用django-model-utils,我能够返回子类而不是父类,这是一个开始,但是当我访问它的属性时,我会得到父类和子类的返回:

代码语言:javascript
复制
    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

代码语言:javascript
复制
def product_detail(request, slug):
    product = Product.objects.get_subclass(slug=slug)

模板

代码语言:javascript
复制
{% for name, value in product.attrs %}
          <td>{{ name }}</td>
          <td>{{ value }}</td>
{% endfor %}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-21 15:44:52

你能这样做吗?

代码语言:javascript
复制
def product_detail(request, slug):
    product = Product.objects.get_subclass(slug=slug)
    child_fields = [i for i in product.__class__.__dict__ if 
                    not i.startswith("__") and not hasattr(Product, i)]
    product_attrs = [(name, getattr(product,name)) for name in child_fields]
    # pass product_attrs to your template
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42371028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档