0
class Property(models.Model):
    title = models.CharField(max_length=255)

class CurrentPrice(models.Model):
    current = models.ForeignKey(Current)
    prop = models.ForeignKey(Property)
    price = models.DecimalField(max_digits=5, decimal_places=2)

class Current(models.Model):
    name = models.CharField(max_length=20)

视图.py:

...
p = Property.objects.all()
return render_to_response('index.html',{'p':p},context_instance=RequestContext(request))

如何获取并在我的模板price中显示它?Property

模板:

{% for item in p %}
{{ item.title }}
{{ item.price }} # ???
{% endfor %}
4

3 回答 3

1

如果 Property 可以有多个 CurrentPrice 对象(默认情况下是什么):

{% for item in p %}
    {{ item.title }}
    {% for current_price in item.currentprice_set.all %}
        {{ current_price.price }}
    {% endofor %}
{% endfor %}

如果只有一个(但在这种情况下,最好使用 o2o 字段而不是 FK 字段,否则您可以防止多个 CurrentPrice 记录指向同一属性):

{% for item in p %}
    {{ item.title }}
    {{ item.currentprice_set.get.price }}
{% endfor %}
于 2013-02-19T16:25:00.487 回答
1

我不确定您的模型目的/设计是什么,从您展示的内容来看,这看起来不合适。

CurrentPrice每个对象都有很多Property,所以在模板中你可以做的是

{% for item in p %}
    {{ item.title }}
    {% for cp in item.currentprice_set.all %}
        {{ cp.price }}
    {% endfor %}
{% endfor %}
于 2013-02-19T16:23:11.777 回答
0

我认为您正在尝试做的事情如下所示。

class Property(models.Model):
    title = models.CharField(max_length=255)

    @property
    def current_price(self):
        # The current price is the last price that was given.
        if self.pricing_history.count() > 0:
            return self.pricing_history.order_by('-when')[0].amount
        return None

class Price(models.Model):
    prop = models.ForeignKey(Property, related_name='pricing_history')
    amount = models.DecimalField(max_digits=5, decimal_places=2)
    when = models.DateTimeField(auto_now_add=True)

模板中的示例:

{% for item in p %}
    {{ item.title }}
    {{ item.current_price }}
{% endfor %}
于 2013-02-19T17:56:33.720 回答