1

I am trying to access information from two models in my django application here is my models:

class Events(models.Model):

    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=50, blank=True, default='')
    description = models.CharField(max_length=500, blank=True, default='')
    date = models.CharField(max_length=200, blank=True, null=True)
    time = models.CharField(max_length=200, blank=True, null=True)
    price = models.CharField(max_length=240, blank=True, default='')
    active = models.CharField(max_length=1, blank=True, default='d')
    seats = models.CharField(max_length=200, blank=True, default='')
    alcohol_choice = models.CharField(max_length=1, blank=True, default='n')
    starter = models.CharField(max_length=350, blank=True, default='')
    main_menu = models.CharField(max_length=350, blank=True, default='')
    dessert = models.CharField(max_length=350, blank=True, default='')
    notes = models.CharField(max_length=350, blank=True, default='')

    class Meta:
        app_label = 'events'

class GalleryImagesEvents(models.Model):

    event = models.ForeignKey(Events, on_delete=models.CASCADE)
    file = ResizedImageField(size=[1200, 800], quality=75, upload_to="events/static/galleryimages")
    file_thumbnail = ResizedImageField(size=[300, 300], crop=['middle', 'center'], upload_to="events/static/galleryimages/thumbnails")
    order = models.TextField(default='', blank=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    created_date = models.DateTimeField(auto_now_add=True)
    modified_date = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ['order']

I can have multiple Events for an user, Each event can have multiple gallery images.

What I am trying to do is get all the events from the user and only get one image for the event from the galleryimagesevent model attached to the event.

@csrf_exempt
@login_required(login_url="/login/")
def EventsView(request):

    user = User.objects.get(pk=request.user.id)
    events_list_data = Events.objects.filter(user_id=user).order_by('-date')[:10]
    events_list_images = GalleryImagesEvents.objects.filter(event_id=events_list_data)

    return render(request, 'events/view.html', {"events_list_data":events_list_data, 'events_list_images': events_list_images})

I know classes are used etc But I am still learning so bare with my coding. :)

Not getting this at all. How to connect them.

        {% for event_list in events_list_data %}
            <div class="panel-body event-box">
                <div class="col-md-4 no-padding">
                    <img src="{{ events_list_images.file_thumbnail.url }}" class="img-responsive img-events-thumb">
                </div>
                <div class="col-md-6 event-inner-box">
                    <div>
                        <h4><b>{{ event_list.title }}</b> <span class="event-small">
                            {% if event_list.active == 'r' %} Not approved yet! {% endif %}
                            {% if event_list.active == 'd' %} Approved but deactivated! {% endif %}
                            {% if event_list.active == 'a' %} Approved & Active! {% endif %}
                            {% if event_list.active == 'e' %} Expired! {% endif %}
                        </span></h4>
                        <p>{{ event_list.description|slice:":100" }}...</p>
                        <br>
                        <button class="btn btn-primary btn-small" type="submit">Deactivate</button>
                        <button class="btn btn-primary btn-small" type="submit">Preview</button>
                        <button class="btn btn-primary btn-small" type="submit"><span class="fa fa-pencil"></span></button>
                    </div>
                </div>
                <div class="col-md-2 event-inner-box-date">
                    <div>
                        <p></p>
                        <h3><span class="dateShow dateformat_{{ event_list.id }}"></span><br><span class="dayformat_{{ event_list.id }}"></span></h3>
                    </div>
                    <script>
                        var dateMonthAsWord = moment('{{ event_list.date }}').format('DD');
                        var dateMonthAsWordMonth = moment('{{ event_list.date }}').format('MMM');
                        $('.dateformat_{{ event_list.id }}').html(dateMonthAsWordMonth);
                        $('.dayformat_{{ event_list.id }}').html(dateMonthAsWord);
                    </script>
                </div>
                <div class="clearfix"></div>
            </div>
 {% endfor %}

Above is how I would like to show my events.

TA!

2
  • do you want to get a random or a (somehow) specific image from the gallery images? You can create a model property for this kind of logic Commented Jul 30, 2017 at 13:31
  • Any Random image... Doesn't really matter if I can get a specific image that would be great... say the first image. Commented Jul 30, 2017 at 13:32

2 Answers 2

1

you can use first template tag to get only one image (first one) from event_list_data. or you can use [0] index. for example:

{% for event_list in events_list_data %}
    <img src="{{events_list.galleryimagesevents_set.all|first.file_thumbnail.url }}">
    <img src="{{events_list.galleryimagesevents_set.all.0.file_thumbnail.url }}">
{% endfor %}

https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#first

Sign up to request clarification or add additional context in comments.

Comments

0

So I got this working from using the above you have provided me:

                <div class="col-md-4 no-padding">
                    <img src="{{ event_list.galleryimagesevents_set.all.0.file_thumbnail.url }}" class="img-responsive img-events-thumb">
                </div>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.