Hi all,

Just quickly to summarize I have an app, which allows clubs to sign up and
carry out different tasks. One of the features is a scheduling / rosters.
Currently I have a form to add times to the roster. The club pages work off
a session key based on the initially selected club.

My form consists of:
*club_id* - which I have hidden and initialized based on the logged in user.
*pitch_id - *which is currently displaying all pitches associated to all
clubs but I need this to *only show pitches based on the foreign key for
the club_id *

Would appreciate any help.

Please see code below:

*form.py *

from django import forms
from clubkit.roster.models import RosterId
import datetime
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _


# Form to add/edit club roster
class RosterForm(forms.ModelForm):

    class Meta():
        model = RosterId
        fields = ('club_id', 'pitch_id', 'team_id', 'date',
                  'start_time', 'finish_time', 'reoccuring_event',)
        widgets = {
            'date': forms.DateInput(attrs={'id': 'datepicker'})
        }

        def clean_date(self):
            date = self.clean_date['date']
            if date < datetime.date.today():
                raise ValidationError(_('Date cannot be in the past.'))
            return date

    def __init__(self, *args, **kwargs):
        super(RosterForm, self).__init__(*args, **kwargs)
        self.fields['club_id'].widget = forms.HiddenInput()

*model.py - for roster*

from django.db import models
from clubkit.clubs.models import ClubInfo, Pitch, Team


# Model to store roster information
class RosterId(models.Model):
    club_id = models.ForeignKey(ClubInfo, on_delete=models.CASCADE)
    pitch_id = models.ForeignKey(Pitch, on_delete=models.CASCADE)
    team_id = models.ForeignKey(Team, on_delete=models.CASCADE)
    date = models.DateField(max_length=8)
    start_time = models.TimeField(default='')
    finish_time = models.TimeField(default='')
    reoccuring_event = models.BooleanField(default=False)

*model.py - for pitch*

class Pitch(models.Model):
    club_id = models.ForeignKey(ClubInfo, on_delete=models.CASCADE,
related_name="pitches")
    pitch_name = models.CharField(max_length=30)
    PITCH_SIZES = (
        ('S', 'Small'),
        ('M', 'Medium'),
        ('L', 'Large'),
    )
    PITCH_TYPE = (
        ('1', 'Outdoor'),
        ('2', 'Indoor'),
    )
    pitch_size = models.CharField(max_length=1, choices=PITCH_SIZES)
    pitch_type = models.CharField(max_length=1, choices=PITCH_TYPE)
    open_time = models.TimeField(default='09:00')
    close_time = models.TimeField(default='22:00')
    RENT_TYPE = (
        ('0', 'Not Available To Rent'),
        ('1', 'Available To Rent'),
    )
    rental = models.CharField(max_length=1, choices=RENT_TYPE)
    rental_price = models.DecimalField(default=0.00, max_digits=6,
decimal_places=2)
    max_people = models.IntegerField(null=True)

    def __str__(self):
        return self.pitch_name

*view.py*

class ClubRoster(APIView):
    renderer_classes = [TemplateHTMLRenderer]
    template_name = 'roster.html'

    # Get method to retrieve current roster information and form
    def get(self, request):
        if request.user.is_authenticated:
            club_pk = request.session.get('pk')
            club_info = ClubInfo.objects.filter(user=request.user).first()
            reoccuring_event =
RosterId.objects.filter(reoccuring_event=True, club_id=club_pk)
            inital_data = {
                'club_id': club_info,
            }
            form = RosterForm(initial=inital_data)
            roster = RosterId.objects.filter(club_id=club_pk)
            return Response({'form': form,
                             'roster': roster,
                             'club_pk': club_pk,
                             'reoccuring_event': reoccuring_event
                             })

-- 
__

Séanadh Ríomhphoist/_

Email Disclaimer__
**

Tá an ríomhphost seo agus 
aon chomhad a sheoltar leis faoi rún agus is lena úsáid ag an seolaí agus 
sin amháin é. Is féidir tuilleadh a léamh anseo. 
<https://www4.dcu.ie/iss/seanadh-riomhphoist.shtml>  
<https://www4.dcu.ie/iss/seanadh-riomhphoist.shtml>*
_

This e-mail and any 
files transmitted with it are confidential and are intended solely for use 
by the addressee. Read more here. 
<https://www4.dcu.ie/iss/email-disclaimer.shtml> _
*_

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAHZR7JdQjz6AaXVsrUJxhFs2SD6mm381ybfS%2Bqbeqh%2B%3D3SvwaA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to