Hello there Galvin,

 
You can create properties on the users and filter the queryset conditioning to 
the user. It depends on how many categories of user you have and how these 
users are supposed to be filtered by those teams.

 

For example, if you have a spatial selection based on user location, you create 
a property called ‘location_filter’ and set the separation rule on this 
property, like:

 

@property

def location_filter(self):

                location = self.location

                filter_rule = 5miles

                return [self.location - filter_rule, self.location + 
filter_rule]

 

and in your form you set a init argument to query those filter rules, in the 
fashion that you want:

 

def __init__(self, *args, **kwargs):

                user = kwargs.pop(‘user’, None)

                self.fields[‘club_id’].queryset = 
Club.objects.filter(place__lte=user.location_filter[1], 
place__gte=user.location_filter[0])

 

I have not tested this solution, but with some minor code changes it should 
work like a charm in filtering the club queryset.

 

From: django-users@googlegroups.com <django-users@googlegroups.com> On Behalf 
Of GavinB841
Sent: sábado, 9 de fevereiro de 2019 11:24
To: Django users <django-users@googlegroups.com>
Subject: Trying to filter out choices in a form based on the logged in user.

 

Hi all,

 

If anyone could help or point me in the direction of some documentation for the 
below problem I am having I would really appreciate it.

 

Just to explain quickly:

1.      I have a model called "Team" which contains a foreign key to another 
model called "Club"
2.      The "Club" model contains a foreign key to the "User" model.
3.      I have a form for the "Team" model which takes in "club_id", currently 
it lists all the club_id for all users and I want to restrict this.
4.      I am looking to find out how I can auto-populate this field "club_id" 
based on the logged in user, which I will then hide in the form. 

Below is my forms.py

 

class ClubInfoForm(forms.ModelForm):
    club_address2 = forms.CharField(required=False)
    club_address3 = forms.CharField(required=False)

    class Meta():
        model = ClubInfo
        fields = ('club_name', 'club_logo', 'club_address1', 'club_address2',
                  'club_address3', 'club_town', 'club_county', 'club_country',)

        def clean_club_name(self):
            club_name = self.cleaned_data['club_name']
            if ClubInfo.objects.filter(club_name=club_name).exists():
                raise ValidationError(_("Club already exists"))
            return club_name


class TeamForm(forms.ModelForm):

    class Meta():
        model = Team
        fields = ('club_id', 'team_name', 'manager_name')

    def __init__(self, *args, **kwargs):
        super(TeamForm, self).__init__(*args, **kwargs)
 
 
models.py
 
class ClubInfo(models.Model):

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    club_name = models.CharField(max_length=50, default='', unique=True)
    club_logo = models.ImageField(upload_to='profile_pics', blank=True)
    club_address1 = models.CharField(max_length=30)
    club_address2 = models.CharField(max_length=30, default='')
    club_address3 = models.CharField(max_length=30, default='')
    club_town = models.CharField(max_length=30)
    club_county = models.CharField(max_length=30)
    club_country = models.CharField(max_length=30)
    created_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.club_name
 
class Team(models.Model):

    club_id = models.ForeignKey(ClubInfo, on_delete=models.CASCADE)
    team_name = models.CharField(max_length=30)
    manager_name = models.CharField(max_length=20)


    def __str__(self):
        return self.team_name

 

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 django-users+unsubscr...@googlegroups.com 
<mailto:django-users+unsubscr...@googlegroups.com> .
To post to this group, send email to django-users@googlegroups.com 
<mailto:django-users@googlegroups.com> .
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/8188ff6e-bf56-4010-9caf-90d8a294a187%40googlegroups.com
 
<https://groups.google.com/d/msgid/django-users/8188ff6e-bf56-4010-9caf-90d8a294a187%40googlegroups.com?utm_medium=email&utm_source=footer>
 .
For more options, visit https://groups.google.com/d/optout.

-- 
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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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/005d01d4c07c%24de678170%249b368450%24%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to