私はテンプレート内の子モデルインスタンスの属性を反復しようとしています。特に、子属性にアクセスしたいだけです。実行時には、それがどのような具体的なサブクラスであるのか分かりません。私が代わりに開始され、親のサブクラスを返すことができましたdjango-model-utils
を使用して、私はその属性にアクセスするときに私が手両親とチャイルズが返さ:Djangoのマルチテーブル継承の子モデルクラス属性へのアクセス
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 %}
そうではありませんか?子供は親の属性を継承するので、 'created_at'のような' Product'属性も表示されます。 – LaundroMat
@LaundroMatそうだと思いますが、これが可能であれば、子供の属性のみを返す方法を見つけようとしています – KingFu
ああ、それでは:)この答えはあなたのところに置くことができますか? http://stackoverflow.com/questions/7136154/python-how-to-get-subclasss-new-attributes-name-in-base-classs-method – LaundroMat