Reputation: 815
I am working on a django app where I have a members model and another model called reviews.
My members
model
class Members(models.Model):
TITLES = (('chairman', 'Chairman'), ('secretary', 'Secretary'),)
user = models.OneToOneField(User, on_delete=models.CASCADE)
title = models.CharField(max_length=10, choices=TITLES, default='secretary')
active = BooleanField(default=False)
My reviews
model
class Reviews(models.Model):
chairman = models.ForeignKey(Members, related_name='chairs', on_delete=models.PROTECT)
secretary = models.ForeignKey(Members, related_name='secretaries', on_delete=models.PROTECT)
review = models.TextField()
There could be several chairmen and secretaries but in the foreign key drop down, on the Reviews model, I would like to only display the ones who are active (i.e have the active field set to True). I have tried to achieve that by having the following in my admin.py
...
class ReviewsAdmin(admin.ModelAdmin):
...
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "chairman":
kwargs["queryset"] = Members.objects.filter(title=='chairman', active==True)
elif db_field.name = "secretary":
kwargs["queryset"] = Members.objects.filter(title=='secretary', active==True)
return super().formfield_for_foreignkey(db_field, request, **kwargs)
admin.site.register(Reviews, ReviewsAdmin)
I'm getting the error, name 'title' is not defined
around where I'm doing the filter. What is wrong here?
Upvotes: 0
Views: 460
Reputation: 1099
Use only '=' inside the query.
if db_field.name == "chairman":
kwargs["queryset"] = Members.objects.filter(title='chairman', active=True)
elif db_field.name = "secretary":
kwargs["queryset"] = Members.objects.filter(title='secretary', active=True)
Upvotes: 1