Django как запросить вложенный объект - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть модель индекса, которая сохраняет все идентификаторы объектов / PK всех моих различных моделей постов:

collectable_post_models = models.Q(app_label='App', model='post_model1') | models.Q(app_label='App', model='post_model2') | models.Q(app_label='App', model='post_model3')

class PostCollection(models.Model):
    id = models.AutoField(primary_key=True, editable=False)
    content_type = models.ForeignKey(ContentType, limit_choices_to=collectable_post_models,
                                     related_name='collections', related_query_name='collection',
                                     on_delete=models.CASCADE, null=True, blank=False)
    object_id = models.CharField(max_length=36, blank=False)
    content_object = GenericForeignKey('content_type', 'object_id')
    date_added = models.DateTimeField(auto_now_add=True, blank=False)

    class Meta:
        unique_together = ('content_type', 'object_id')
        verbose_name = "Post Collection - HELPER TABLE"
        verbose_name_plural = "Post Collections - HELPER TABLE"
        ordering = ['-date_added']

Каждая из моих моделей постов выглядит очень похоже, например:

class Post(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(verbose_name="Title", max_length=40)
    collection = GenericRelation(PostCollection, related_query_name='post')

Теперь у меня есть представление, которое должно сгенерировать список предложений, которые пользователь также хотел бы видеть:

def post_proposals():
    post_elements = sorted(
        chain(
            PostCollection.objects.values_list('id', flat=True),
        )
    )
    post_elements_list = list(post_elements)
    post_proposals = random.sample(post_elements_list, 1) # 1 is the number of elemets that should get returned
    return post_proposals

В моем шаблоне я в настоящее время просто возвращаю значение идентификатора объекта PostCollection, но на самом деле я хочу получить заголовок элемента post за объектом Index. Как мне это сделать?

Это то, что я делаю в моем шаблоне, например:

{% for post_proposal in post_proposals %}
    <h1>{{post_proposal}}</h1>
{% endfor %}
...