我試圖遍歷模板中的子模型實例的屬性,特別是我只想訪問子屬性。在運行時我不會知道它是什麼具體的子類。使用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 %}
是不是應該如此?一個孩子繼承父母的屬性,所以'product'屬性例如'created_at'也是正常顯示,否? – LaundroMat
@LaundroMat我認爲是這樣,但我試圖找到一種方法,只返回孩子的屬性,如果這是可能的 – KingFu
噢好吧然後:)也許這個答案可以把你的方式嗎? http://stackoverflow.com/questions/7136154/python-how-to-get-subclasss-new-attributes-name-in-base-classs-method – LaundroMat