下面是我的模型,表格,管理和views.py文件。
我正在尝试在管理面板上将多个图像添加到事件模型,并尝试在event-detail.html页面中显示它们。以下是我的event-detail.html页面上的代码块。
<div class="row mt-4">
{% for image in companyevent.eventphotos_set.all %}
<div class="col-md-4">
<a href=""><img src="{{image.image.url}}" class="img-border" alt=""></a>
</div>
{% endfor %}
class CompanyEvent(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(max_length=100, blank=True, null=True,unique_for_date='published_date',
help_text="SEO friendly post title (automatically filled)")
event_cover= models.ImageField(upload_to='EventImages', blank=True, help_text="Add Cover Image to the Event", null=True)
categories = models.ManyToManyField(Categories, blank=False, default='General', help_text="Category of the Event")
description= RichTextUploadingField(help_text="content of the post goes here", blank=True, null=True)
created_date = models.DateTimeField(auto_now_add=True, help_text="Date on which the event has been Created")
tags = models.ManyToManyField(Tags)
status = models.CharField(choices=STATUS, default='DRAFT', max_length=10,
help_text="to segregate events based on status")
published_date = models.DateTimeField(auto_now_add=True, help_text="Do you want to publish the event")
updated_date = models.DateTimeField(auto_now=True, help_text="Any changes to the Event!")
objects = EventQuerySet.as_manager()
def __str__(self):
return self.title
def __unicode__(self):
return self.title
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(CompanyEvent, self).save(*args, **kwargs)
class Meta:
ordering= ['-published_date']
def get_all_content(self):
return ''.join(map(lambda x: '%s' % str(x), (self.title, self.description)))
def get_absolute_url(self):
# return '/' + self.slug + '/'
return reverse('company_events:event_detail', kwargs={
'slug': self.slug
})
def is_draft(self):
return self.status == "draft"
def datepublished(self):
return self.published_date.strftime('%B %d %Y')
# return self.published_date.date()
def get_categories(self):
ret=''
for cat in self.categories.all():
ret= ret+ cat.cat_name + ', '
return ret[:-1]
def get_tags(self):
ret=''
for tag in self.tags.all():
ret= ret+ tag.tag_name + ', '
return ret[:-1]
def get_image_filename(instance, filename):
title = instance.title
slug = slugify(title)
return "event_images/%s-%s" % (slug, filename)
class EventPhoto(models.Model):
event = models.ForeignKey(
CompanyEvent, on_delete=models.CASCADE, related_name="photos"
)
photo = models.ImageField(upload_to='EventImages', verbose_name='Image')
class EventAdminForm(forms.ModelForm):
class Meta:
model = CompanyEvent
fields = (
"title",
"slug",
"event_cover",
"description",
"categories",
"tags",
"status",
)
photos = forms.FileField(
widget=forms.ClearableFileInput(attrs={"multiple": True}),
label=_("Event Photos"),
required=False,
)
def clean_photos(self):
"""Make sure only images can be uploaded."""
for upload in self.files.getlist("photos"):
validate_image_file_extension(upload)
def save_photos(self, event):
"""Process each uploaded image."""
for upload in self.files.getlist("photos"):
photo = EventPhoto(event=event, photo=upload)
photo.save()
class EventAdmin(admin.ModelAdmin):
form = EventAdminForm
list_display = ('title', 'slug', 'status', 'published_date',)
list_filter = ('status',)
# list_display = ('title', 'slug', 'status', 'published_date','content')
search_fields = ['title', 'content']
prepopulated_fields = {'slug': ('title',)}
inlines = [ShowPhotoInline]
def save_related(self, request, form, formsets, change):
super().save_related(request, form, formsets, change)
form.save_photos(form.instance)
class EventPageView(generic.ListView):
queryset = CompanyEvent.objects.published()
template_name = 'site/event-main.html'
paginate_by = 5
def get_context_data(self, **kwargs):
context_data = super(EventPageView, self).get_context_data(**kwargs)
context_data['page_range'] = GenericPaginator(
self.queryset,
self.paginate_by,
self.request.GET.get('page')
).get_page_range()
context_data['categories'] = Categories.objects.all()
context_data['tags'] = Tags.objects.all()
return context_data
class EventDetailView(generic.DetailView):
model = CompanyEvent
template_name = 'site/event-detail.html'
def get_context_data(self, **kwargs):
context_data = super(EventDetailView, self).get_context_data(**kwargs)
related_events = CompanyEvent.objects.filter(
tags__in=list(self.object.tags.all())
).exclude(id=self.object.id).distinct()
context_data['related_events'] = related_events[:3]
# limit for post
return context_data
我应该更改视图中的任何内容以获取所有图像吗?