Before we create an object for Workshop, let's add another important field in the event, to know wether on spot registration is avaiable for a particular event or not. Some events that take place in college may have on spot registrations and some events won't have and also along with this, a max registration count needs to be taken, till which registration needs to be allowed.
We shall add 2 more fields in the AbstractEvent class :
on_spot_registration = models.BooleanField(default=False)
max_registrations = models.PositiveIntegerField(null=True, blank=True)
These 2 fields, will help to denote wether on spot registrations are there and specify how many registrations needs to be accepted through the website.
To make the changes in the database, we will need to run the migrations.
python manage.py makemigrations
python manage.py migrate
After doing this, we shall also include this in the admin page by editing the event/admin.py
file. Edit the AbstractAdmin class and WorkshopAdmin class as follows :
class AbstractEventAdmin(admin.ModelAdmin):
list_display = ('name', 'event_type', 'on_spot_registration','max_registrations','start_date', 'end_date', 'registration_start_date', 'registration_end_date', 'created_at', 'modified_at')
search_fields = ['name',]
list_filter = ['event_type', 'start_date', 'end_date', 'registration_start_date', 'registration_end_date', 'created_at', 'modified_at']
autocomplete_fields = ['department']
prepopulated_fields = {'slug': ('name',)}
@admin.register(Workshop)
class WorkshopAdmin(AbstractEventAdmin):
list_display = ('workshop_title', 'venue',)+AbstractEventAdmin.list_display
search_fields = AbstractEventAdmin.search_fields + ['workshop_title', 'venue']
fieldsets = (
('Basic Information', {
'fields': ('name', 'slug', 'website_link', 'mail_id', 'on_spot_registration', 'max_registrations')
}),
('Workshop Details', {
'fields': ('workshop_title', 'venue', 'target_audience', 'event_type', "department", 'poster')
}),
('Dates', {
'fields': ('start_date', 'end_date', 'registration_start_date', 'registration_end_date',)
}),
)
def get_queryset(self, request):
qs = super().get_queryset(request)
if not request.user.is_superuser:
qs=qs.filter(department = request.user.hodprofile.department)
return qs
After making these changes, the admin page will look like this.