Ich versuche, die Attribute eines untergeordneten Modells in einer Vorlage zu durchlaufen, insbesondere möchte ich nur auf die Attribute von childs zugreifen. Zur Laufzeit werde ich nicht wissen, welche konkrete Unterklasse es ist. Mit django-model-utils
Ich habe in der Lage, die Unterklasse statt den Eltern zurückzukehren, das ist ein Anfang, aber wenn ich seine Attribute zugreifen ich sowohl die Eltern und die Childs zurück:Greifen Sie auf Kindmodellklassenattribute in der Vererbung mehrerer Tabellen in Django zu
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)
Vorlage
{% for name, value in product.attrs %}
<td>{{ name }}</td>
<td>{{ value }}</td>
{% endfor %}
Soll das nicht so sein? Ein Kind erbt die Attribute des Elternteils. Es ist also normal, dass auch 'Produkt'-Attribute wie' created_at' angezeigt werden, nein? – LaundroMat
@LaundroMat Ich nehme an, aber ich versuche einen Weg zu finden, nur die Attribute des Kindes zurückzugeben, wenn das möglich ist – KingFu
Oh ok dann :) Vielleicht kann diese Antwort dich auf den Weg bringen? http://stackoverflow.com/questions/7136154/python-how-to-get-subclasss-new-attributes-name-in-base-classs-method – LaundroMat