如果要在整个应用程序范围内执行此操作,可以使用limit_choices_to=…
[Django-doc]:
class Invitation(models.Model):
school = models.ForeignKey(School, on_delete=models.CASCADE)
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
limit_choices_to={'groups__name': 'Director'},
)
如果您只想在ModelAdmin
中应用此选项,则可以通过覆盖.formfield_for_foreignkey(…)
[Django-doc]来限制查询集:
@admin.site.register(Invitation)
class InvitationAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'user':
kwargs['queryset'] = User.objects.filter(groups__name='Director')
return super().formfield_for_foreignkey(db_field, request, **kwargs)
Note:通常情况下,使用settings.AUTH_USER_MODEL
[Django-doc]来引用用户模型比直接使用User
model [Django-doc]要好.欲了解更多信息,您可以查看referencing the User
model section of the documentation [Django-doc].