1

サードパーティ アプリ ( https://github.com/bitmazk/django-review ) を使用して、一般的な外部キーを介してモデルのレビューを生成しています。

class Store(models.Model):
    bio = models.CharField(max_length=255, null=True, blank=True)
    full_name = models.CharField(max_length=100, blank=True, null=True)
    username = models.CharField(max_length=100, unique=True)

    website = models.URLField(null=True, blank=True)
    phone = models.CharField(null=True, blank=True, max_length=12)
    whatsapp = models.CharField(null=True, blank=True, max_length=12)

景色:

def store_list(request):
    stores = Store.objects.all()
    context['stores'] = stores
    return render(request, 'store_list.html', context)

各ストアのレビューを返すにはどうすればよいですか?

編集:django-reviewのテンプレートタグを使用せずにそれを行いたいことを指摘する必要があります。

4

1 に答える 1

0

django-reviewDjangocontenttypes一般的な外部キーを使用して、独自のアプリケーションの外部でレビュー用のデータベース レコードを作成します。レビュー対象のオブジェクトを指定するために、モジュールは URL を介してレビュー対象のモデル名とオブジェクト pk の整数を渡します。

そのため、テンプレートで「この項目を確認」ボタンを作成するには、オブジェクト自体のモデル名と ID が必要です。これが、一般的な外部キーを実装する方法です。

{% for store in stores %}
    <a href="{% url "review_create" content_type='store' object_id=store.pk %}">
        Review our {{ store.name }} store
    </a>
{% endfor %}

レビューを取得するには、含まれているテンプレート タグを使用しdjango-reviewてルックアップを実行します。以下をご覧ください。必要なのはこれだけです。

{% load review_tags %}

{% for store in stores %}
    {% get_reviews store as reviews %}
    {% for review in reviews|slice:"0:3" %} {# get the first three reviews #}
        <p>
            {{ review.get_average_rating }} 
        </p>
        <p>
            {% if review.content %}
                {{ review.content|truncatewords:'70' }}
            {% else %}
                Reviewed without description.
            {% endif %}
        </div>
        <a href="{% url "review_detail" pk=object.pk %}">Review details</a>
    {% endfor %}
{% endfor %}
于 2016-07-03T17:37:21.673 に答える