Задать вопрос
@nurzhannogerbek

Как вытащить список id?

Здравствуйте! Не могу решить одну задачу. Подайте идею пожалуйста! Буду рад любой идеи.

В своём Django проекте для контроля изменений в модели "Product" использую приложение `django-reversion`. Модель `"Product"` состоит из поле "comments" c типом ManyToMany.

Есть страница с историей изменения модели Product, но поле comments выводит лишь список id комментариев. Внизу приведен пример страницы для наглядности. Не совсем информативно, хотелось бы вывести остальную информацию о комментариях (author, data, text) по этим id. Не могу понять как вывести их.

0069718bc3694bdeb2f85635ca93b9ca.PNG

models.py:
@reversion.register()
class Product(models.Model):
    comments = models.ManyToManyField("Comment")

class Comment(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    text = models.TextField()
    created = models.DateTimeField(auto_now_add=True)


views.py:
def product_reversions(request, product_code):
    product = get_object_or_404(Product, pk=project_code)
    versions = Version.objects.get_for_object(product)
    for version in versions:
        version.comments = Comment.objects.filter(id__in=version.field_dict['comments'])
    context = {
        'product': product,
        'versions': versions,
    }
    return render(request, 'project/product_reversions.html', context)


product_reversions.html:
{% for version in versions %}
      {% for field_name, field_value in version.field_dict.items %}
               {{ field_name }}
               {{ field_value }}
      {% endfor %}
{% endfor %}
  • Вопрос задан
  • 549 просмотров
Подписаться 1 Оценить 4 комментария
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
for version in versions:
    version.comments = Comment.objects.filter(id__in=version.field_dict['comments'])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы