2017-07-30 56 views
1

我想从我这里Django应用两种模式访问的信息是我的模型:的Python正从两个模型在Django

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'] 

我可以有多个活动的一个用户,每一个事件可以有多个画廊图像。

我想要做的是从用户获取所有事件,并且只能从附加到事件的galleryimagesevent模型获取事件的一个图像。

@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}) 

我知道类是用于等等但我仍然学习如此裸露与我的编码。 :)

没有得到这一点。如何连接它们。

 {% 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 %} 

以上是我想如何显示我的活动。

TA!

+0

你想获得一个随机的或(在某种程度上),具体从图像画廊的图像?您可以为这种逻辑创建一个模型属性 –

+0

任何随机图像...如果我能得到一个特别的图像,那么这个图像真的很重要......说出第一张图像并不重要。 – Darren

回答

1

您可以使用first模板标记从event_list_data获取仅一个图像(第一个)。或者您可以使用[0]索引。例如:

{% 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

0

所以我得到了这个利用工作上面,你为我提供:

   <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>