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

モデルの目的/設計が何であるかわかりませんが、あなたが示したものからは適切に見えません。

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 に答える
1

プロパティが複数の CurrentPrice オブジェクトを持つことができる場合 (既定値):

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

1 つだけの場合 (ただし、その場合は FK フィールドの代わりに o2o フィールドを使用することをお勧めします。それ以外の場合は、複数の CurrentPrice レコードが同じプロパティを指すのを防ぐ必要があります):

{% for item in p %}
    {{ item.title }}
    {{ item.currentprice_set.get.price }}
{% endfor %}
于 2013-02-19T16:25:00.487 に答える
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 に答える